請問各位先進:
如果我在VBA以SHELL來執行了一段DOS命令,要如何才能知道指令執行是否成功(例如ping另一台主機,成功則顯示成功,反之找不到主機則顯示失敗)?我試過抓取回傳值,但每次回傳的VALUE都不一樣,真是困擾啊∼
請問各位先進:
如果我在VBA以SHELL來執行了一段DOS命令,要如何才能知道指令執行是否成功(例如ping另一台主機,成功則顯示成功,反之找不到主機則顯示失敗)?我試過抓取回傳值,但每次回傳的VALUE都不一樣,真是困擾啊∼
若執行成功,Shell的回傳值應該是該動作的Task ID (或稱process ID),
這ID是一個識別碼,供其他VBA指令辨識用的,例如 AppActivate。
而所謂的執行成功與失敗,指的是Shell本身,而非所執行的程式或指令。
以本例來說,Shell確實執行了ping.exe就傳回Task ID,不管ping執行的結果如何。
至於要如何偵測 ping 的結果,我也不會...
看這個能否給你一點靈感...
http://www.pczone.com.tw/showthread.php?t=117234
這是一位大師級高手教我的,Win2K+Office2K測試OK~
不在於程序碼有多艱深,而是巧思與靈感。
(真恍然大悟, 為何就沒想到導出文字檔呢? >"< )
語法:Sub Ping() Shell "cmd /c ping www.pczone.com.tw > C:\test\ping.txt" Application.Wait (Now + Timevalue("0:00:02")) On Error Resume Next Open "C:\test\ping.txt" For Input As #1 Do While Not EOF(1) Line Input #1, TextLine i = i + 1 Cells(i, 1) = TextLine P = InStr(TextLine, "Destination") P1 = InStr(TextLine, "Request") If P <> 0 Or P1 <> 0 Then MsgBox "測試失敗" GoSub Line End If Loop MsgBox "測試成功" Line: Close #1 End Sub
若結果不正確,Application.Wait秒數試著加多一點。
書籤