EXCEL2002 vb6.0において
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)を宣言したのに
Shell "********.exe"
この後起動せず無視してしまいます。
全てのファイルは同じフォルダ内にあり、パス指定は
不要だと思うのですが何か原因でもあるのでしょうか
普通のvbならちゃんと動きますがエクセルから
SHELL起動すると正しく動きません。
Excel VBA では .xls ファイルから起動しても、カレントフォルダは .xls ファ
イルのあるフォルダではなく、マイドキュメントになっているようです。
Shell で指定する実行ファイル名をフルパスで指定してみてください。
ご指導ありがとうございます。
仰せの通り下記のようにフルパスにしたところ
shell "C:\フォルダ\フォルダ\フォルダ\********.exe"
確かにshell起動には一応行ってるんですが今度は
実行時エラー53 が出ます。
単体で動かすと出ないんですよ。不思議です。
最初のkernel32の記述が間違ってますか?
ひょっとしたら******.exe内で使用しているファイルも
フルパスで指定しないといけないんですか?
>確かにshell起動には一応行ってるんですが今度は
>実行時エラー53 が出ます。
実行時エラー 53 というと“ファイルが見つかりません”ですか。
これは Shell 関数で起動した実行ファイルが出しているんですよね?
そうであればこちらもカレントフォルダが実行ファイルが置かれているフォ
ルダになっていないのだと思います。
>最初のkernel32の記述が間違ってますか?
Sleep ならばこれで問題ありません。
>ひょっとしたら******.exe内で使用しているファイルも
>フルパスで指定しないといけないんですか?
その方が良いでしょう。
Shell 関数はカレントフォルダを変更しませんから。
>ひょっとしたら******.exe内で使用しているファイルも
>フルパスで指定しないといけないんですか?
そもそのこのexeのつくりは問題っぽい。
カレントディレクトリを移動しないと実行できないようなものではなくて、
exeのパスから、ファイルパスを取得するとかにしたほうがいいです。
(VBならApp.Pathkから、APIならGetModuleFileNameからパスを生成すべき)
もうつくられてしまったexeならどうしようもないですが。
ありがとうございます。app.pathを追加し
バッチリ動きました。3日間壁にぶち当たっていたので
大変感謝しています。神です。ありがとうございました。
ツイート | ![]() |