Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5647 / 13645 ツリー ←次へ | 前へ→

【49659】VBAのSHELLを用いてEXEファイルを起動したものの、微妙にうまくいかない takashi 07/6/14(木) 23:48 質問[未読]
【49660】Re:VBAのSHELLを用いてEXEファイルを起... Blue 07/6/15(金) 0:22 回答[未読]
【49668】Re:VBAのSHELLを用いてEXEファイルを起... takashi 07/6/15(金) 1:32 お礼[未読]

【49659】VBAのSHELLを用いてEXEファイルを起動...
質問  takashi  - 07/6/14(木) 23:48 -

引用なし
パスワード
   エクセルのVBAのshellを用いて、exeファイルを起動させてました。
exeファイルはCを用いたシンプルなもので、テキストファイルを作成します。(ソースは下記参照)
C:\testのディレクトリにエクセルファイルを作成し、
Shell "C:\test\test.exe"
を実行させたところ、ファイルはC:\testのディレクトリに出来ずに、マイドキュメントに出来ました。
このexeファイルを直接ダブルクリックしたときは、C:\testのディレクトリにテキストファイルが作成されます。
ダブルクリックしたときと同じように、C:\testのディレクトリにテキストファイルを作成する方法があれが教えてください。
よろしくおねがいします。
(ソース、hello.txtというファイルをつくり、hello!を書く)
main( )
{
FILE *fp; /* ファイルポインタ */
fp = fopen( "hello.txt", "w");
fprintf(fp,"hello!\n");
fclose(fp);
return 0;
}

【49660】Re:VBAのSHELLを用いてEXEファイルを...
回答  Blue  - 07/6/15(金) 0:22 -

引用なし
パスワード
   単にカレントが違うだけでは?

exeをダブルクリックで実行するとカレントディレクトリは
実行するえexeと同じ位置になりますが、
Shell関数を使うと、呼び出し元がカレントディレクトリになります。
(ためしにコマンドプロンプトからexeをフルパスで指定して実行すると、
C:\hoge>C:\test\test.txt
の場合、C:\hogeにファイルができます。)

解決方法としては、Shellでexeを呼び出す前に(ChDrive&)ChDirでカレントを
変更するか、実行するディレクトリを指定できるWinAPIのShellExecuteを使うか、

そもそも、exeのつくりをカレントがどこであれ自分と同じディレクトリに
作成させるようにするか

のいずれかでしょう。

【49668】Re:VBAのSHELLを用いてEXEファイルを...
お礼  takashi  - 07/6/15(金) 1:32 -

引用なし
パスワード
   blueさん
お返事ありがとうございます!
教えていただいたchdirで無事に問題は解決されました!
本当にありがとうございます。
きっと基礎的なことだったのかもしれませんが、この二週間ずっと悩んでいた問題からようやく解放されました。
お返事、本当にありがとうございます。
(でもこの問題はshellでexeを使う時には結構発生するような気がしますが、「vba exe shell」などで調べたヘルプでは一度も出てませんでした、本当に言われると簡単な問題でしたが、自分ではさっぱりわかりませんでした、感謝です!)

▼Blue さん:
>単にカレントが違うだけでは?
>
>exeをダブルクリックで実行するとカレントディレクトリは
>実行するえexeと同じ位置になりますが、
>Shell関数を使うと、呼び出し元がカレントディレクトリになります。
>(ためしにコマンドプロンプトからexeをフルパスで指定して実行すると、
>C:\hoge>C:\test\test.txt
>の場合、C:\hogeにファイルができます。)
>
>解決方法としては、Shellでexeを呼び出す前に(ChDrive&)ChDirでカレントを
>変更するか、実行するディレクトリを指定できるWinAPIのShellExecuteを使うか、
>
>そもそも、exeのつくりをカレントがどこであれ自分と同じディレクトリに
>作成させるようにするか
>
>のいずれかでしょう。

5647 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free