プロが教えるわが家の防犯対策術!

VBAで

Dim objWSH As Object
Set objWSH = CreateObject("WScript.Shell")

objWSH.Run Command, 8, True

というようにしてコマンドラインでプログラムを実行している途中で
コマンドプロンプトのウインドウの×印をクリックして
強制終了したとします。
するとそのままVBA上で書かれたその後のプログラムは実行されてしまいますが
コマンドプロンプトが正常に終了しなかった場合には
その後のプログラムの一部あるいは全てをスキップするようにしたいのですが
どうすれば良いでしょうか?

A 回答 (1件)

たとえば


Sub test()
Dim objWSH As Object
Set objWSH = CreateObject("WScript.Shell")
Dim RtnVal As Long
RtnVal = objWSH.Run("%comspec% /c ping 127.0.0.1 -n 10", 8, True)
Debug.Print RtnVal
End Sub
として試すと終了後にはRtnValには0が返ります。

コマンドプロンプトを強制終了させると-1073741510 でした。
pingをpongにすると1になりました。
なのでRtnValの返り値が0かそれ以外かで判断しては?

※深く考えてはいません。
あなたのCommandの内容次第かもしれない。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2015/11/01 15:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!