質問: shell("c:\****\*****\*****.exe & " & cd c:\documents and settings & " & range("a1").value & """") end sub ------------------------------------
回答: ano.1でコメントしたものです。 >カレントシートのa1セルの"abcd"の文字列がそのままdosプロンプトに"abcd"と入力したいです。 うーん、そうするともとのプログラムにある"c:\****....***.exe"とか"cd c:\..."はどういう関係になるのでしょう。 あんまりつまらないやりとりをしてもしょうがないので2パターンだけ想定して例を示してみます。もし、想定が違っていれば教えてください。 なお、コードはshell関数を呼んでいる行だけ書いています。 例1) 想定:****.exeというのは実はcmd.exeのことを意味している。(ので実行したいこととは関係ない。)したい処理は、c:\documents and settingsにcdしてからa1セルに書いてあるコマンドを実行すること コード: myid = shell("cmd /c cd c:\documents and settings && " & range("a1").value) 例2) 想定:****.exeというのが実行したいコマンド。c:\documents and settingsにcdしてから****.exeを実行するがそのとき引数としてa1セルの内容を渡したい。ただし、a1セルの内容は'"'(ダブルクォート)で括りたい コード: myid = shell("cmd /c cd \documents and settings && c:\****\*****\*****.exe """ & range("a1").value & """") 要するにcmd.exeを起動してその引数にコマンドラインを渡して実行させる、というコード例です。 余談ですが、cmd.exeはフルパスで指定してもいいですけど、普通はパスが通っているので手抜きで"cmd"とだけ書いても通ります。よりきちんと書くならshell("c:\windows\system32\cmd.exe ...とか書いた方がいいかもしれません。ですが、windowsのシステムディレクトリが"c:\windows..."である保証などないので、本当はレジストリからシステムディレクトリを引いてきて...とかいう処理になって面倒ですから"cmd"で許してもらいたいところです。 ほかにも「あなたが何をしたいのか」は色々なパターンで想像できるのですけれど、とても思いつく全てのパターン(二桁以上ある)で回答を書き続けるのは嫌なのでとりあえず2パターンに絞ってみました。 違っていたら、もうちょっとこうしたいというのをなるべく詳しく書いて教えてください。