いつもお世話になっております。
ExcelVBAで WshShellを使いRunメソッドで非同期にしてバッチファイルを実行した後、
pauseで画面を止めているのですが、画面を×で閉じた後に
MsgBox("終了しました。")
とメッセージが出す方法はないでしょうか。
つまり、コマンド画面を閉じたかどうかがわかるような方法はありますでしょうか。
同期にすればよい話なのですが、パソコンが5分ごとにSleepになる設定で、バッチ処理が40分程かかるために3分ごとにSendKeysでCtrlキーを押すことによりSleepを回避しています。
(1)同期にするとスリープ対策ができない。
(2)非同期だと終了メッセージが出せない。
ということで、悩んだ末、非同期でSleep対策をすることにしたのですが、上記の処理でつまずきました。
1,2について何か良い方法がありましたらご教示いただけるとありがたいです。
よろしくお願いいたします。
●案2でテストしてみました。
vba
1 2 myTITLE="aaa" 3 WSH.Run "%ComSpec% /c " & Cmd, 1, False 4 5 Do 6 DoEvents 7 WSH.AppActivate myTITLE 8 Loop While Err = 0 9 10 Err.Clear 11 12 MsgBox ("終了しました") 13 14としたのですがタイトルのウインドウを閉じてもErr=0のままになってしまい、ループしたままです。 15タイトル名も変えてみたのですが状況は変わりませんでした。 16何がいけないのでしょうか!?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/08 11:52 編集
2021/02/08 11:54
2021/02/08 11:58
2021/02/09 00:57
2021/02/09 09:10
2021/02/09 10:41