【求助】請問一個關於SHELL的問題 - PCZONE 討論區

返回   PCZONE 討論區 > ▲ -- 電 腦 軟 體 討 論 區 > -- OFFICE 相 關 軟 體 討 論 版


PCZONE 討論區



通知

-- OFFICE 相 關 軟 體 討 論 版 Word、Excel、PowerPoint、Access、Outlook、FrontPage或Office XP等的問題解答與經驗分享

平風造雨
【求助】請問一個關於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~

看這個能否給你一點靈感...
http://www.pczone.com.tw/vbb3/showthread.php?t=117234
回覆
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 
本站使用 vBulletin 合法版權程式
站務信箱 : [email protected]

本論壇所有文章僅代表留言者個人意見,並不代表本站之立場,討論區以「即時留言」方式運作,故無法完全監察所有即時留言,若您發現文章可能有異議,請 email :[email protected] 處理。