平風造雨 ![]() | 【求助】請問一個關於SHELL的問題 請問各位先進: 如果我在VBA以SHELL來執行了一段DOS命令,要如何才能知道指令執行是否成功(例如ping另一台主機,成功則顯示成功,反之找不到主機則顯示失敗)?我試過抓取回傳值,但每次回傳的VALUE都不一樣,真是困擾啊∼ |
回覆 |
Take it easy~ | 若執行成功,Shell的回傳值應該是該動作的Task ID (或稱process ID), 這ID是一個識別碼,供其他VBA指令辨識用的,例如 AppActivate。 而所謂的執行成功與失敗,指的是Shell本身,而非所執行的程式或指令。 以本例來說,Shell確實執行了ping.exe就傳回Task ID,不管ping執行的結果如何。 至於要如何偵測 ping 的結果,我也不會... ![]() |
回覆 |
Take it easy~ | |
回覆 |
Take it easy~ | 這是一位大師級高手教我的,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秒數試著加多一點。 |
回覆 |
平風造雨 ![]() | 非常感謝LEO兄的指導,導專案繁忙 不知不覺就太久沒來了∼ Shell是個相當不負責任的小子,只負責丟卻不負責收回 ![]() |
回覆 |
|
XML | RSS 2.0 | RSS |
本論壇所有文章僅代表留言者個人意見,並不代表本站之立場,討論區以「即時留言」方式運作,故無法完全監察所有即時留言,若您發現文章可能有異議,請 email :[email protected] 處理。