Board logo

標題: VBA可以測試網路有連線嗎? [打印本頁]

作者: algoji3ji3    時間: 2016-6-12 19:39     標題: VBA可以測試網路有連線嗎?

DEAR 各大大
以下是我的程式碼
網路連線時可以正常使用~
但是網路沒接時~會出現錯誤~
請問可以在前面做偵測網路有無連線的方式嗎?
  1. Sub 下載()    '網頁下載

  2.         Const url As String = "https://www.1keydata.com/tw/sql/sql.html"     ' 正確的

  3.         Cells.Clear

  4.         Set ie = CreateObject("internetexplorer.application") '使用此方式可以免除 "設定引用項目"

  5.         With ie
  6.             .Visible = False 'True為開啟ie, False為不開啟ie
  7.             .navigate url
  8.             Do While .readyState <> 4 '等待網頁開啟
  9.             DoEvents
  10.             Loop
  11.             .ExecWB 17, 2 'Select All
  12.             .ExecWB 12, 2 'Copy selection
  13.             Range("A1").Activate
  14.             ActiveSheet.PasteSpecial Format:="HTML", link:=False, DisplayAsIcon:= _
  15.                 False, NoHTMLFormatting:=True
  16.         End With

  17.         ie.Quit
  18.         MsgBox "資料複製結束"    ' 離開前顯示一小視窗提醒,按它後即結束。
  19. End Sub
複製代碼

作者: jackyq    時間: 2016-6-13 09:42

簡法
連1下 google
上不去就代表沒連線
作者: c_c_lai    時間: 2016-6-13 11:22

回復 1# algoji3ji3
[attach]24472[/attach]
作者: algoji3ji3    時間: 2016-6-13 21:29

回復 3# c_c_lai

目前可以正常連線沒錯~
我是想只說如果今天網路異常時~
怎麼判定網頁如果開不起來就跳過程式呢?
作者: c_c_lai    時間: 2016-6-14 07:45

回復 4# algoji3ji3
參考一下:
避免程式被不可預期的錯誤所中斷,就應該使用
on error goto label_name
on error goto 0
on error resume next
來防止。以上述敘使用的有效範圍為 Sub 或 Function,
例如在 Sub 或 Function 的開頭加上
則在 Sub 或 Function 結束就功能失效,
或者使用 on error goto 0 來取消功能。
若發生的錯誤都是可忽略的,建議使用
on error resume next
如此程式就不會因為不可預期的錯誤所中斷了。
如果能知道錯誤的原因,每個錯誤都有個代號
在 Err 物件中,可由 Err.Number 來取得
如果錯誤原因有很多種,則可以用
on error goto label_name 來攔截錯誤。
作者: GBKEE    時間: 2016-6-15 10:50

本帖最後由 GBKEE 於 2016-6-15 14:28 編輯

回復 4# algoji3ji3

試試看
  1. Option Explicit
  2. Sub 下載()    '網頁下載
  3.        ' Dim ie As Object
  4.         Const url As String = "https://www.1keydata.com/tw/sql/sql.html"     ' 正確的
  5.         Cells.Clear
  6. Re:
  7.        ' Set ie = CreateObject("internetexplorer.application") '使用此方式可以免除 "設定引用項目"
  8.         With CreateObject("internetexplorer.application")
  9.            ' .Visible = False 'True為開啟ie, False為不開啟ie
  10.            .Visible = 1
  11.             .navigate url
  12.             Do While .busy Or .readyState <> 4 '等待網頁開啟
  13.             DoEvents
  14.             Loop
  15.             If .DOCUMENT.Title = "Internet Explorer 無法顯示網頁" Then
  16.                 '如網路沒有連線時, IE的表頭="Internet Explorer 無法顯示網頁"                '
  17.                 .Quit
  18.                 Adsl連線
  19.                 GoTo Re
  20.             End If
  21.             .ExecWB 17, 2 'Select All
  22.             .ExecWB 12, 2 'Copy selection
  23.             Range("A1").Activate
  24.             ActiveSheet.PasteSpecial Format:="HTML", link:=False, DisplayAsIcon:= _
  25.                 False, NoHTMLFormatting:=True
  26.             .Quit
  27.         End With
  28.         MsgBox "資料複製結束"    ' 離開前顯示一小視窗提醒,按它後即結束。
  29. End Sub
複製代碼
  1. Sub Adsl連線()
  2.     Dim fs As Object, xBat As String, xAdsl As String
  3.      xBat = "d:\Adsl.BAT"
  4.      xAdsl = "d:\xAdsl.txt"
  5.     Set fs = CreateObject("Scripting.FileSystemObject")
  6.     With fs.CreateTextFile(xBat, 1)            '建立一個檔案
  7.         .Write "rasdial /disconnect" & vbCrLf
  8.         '********************************************************
  9.         .Write "rasdial MyAdsl [email protected] 123456789 >> " & xAdsl & vbCrLf
  10.         '   需輸數 入正確的 Pc連線名稱 連線帳戶 密碼  ****
  11.         .Write "rasdial Pc連線名稱 連線帳戶 密碼 >> " & xAdsl & vbCrLf
  12.         '********************************************************
  13.         .Write "DEL d:\xAdsl.txt" & vbCrLf
  14.         .Close
  15.     End With
  16.     Shell (xBat)              '
  17.     Do While Dir(xAdsl) = "": DoEvents: Loop
  18.     Do While Dir(xAdsl) <> "": DoEvents: Loop
  19.     Kill xBat
  20. End Sub
複製代碼

作者: algoji3ji3    時間: 2016-6-16 22:18

回復 6# GBKEE

感謝版主大大幫忙~~
稍微修改了一下~斷線時可以跳過程序~不再當機了~
  1. Sub 下載()    '網頁下載
  2.        ' Dim ie As Object
  3.         Const url As String = "https://www.1keydata.com/tw/sql/sql.html"     ' 正確的
  4.         Cells.Clear

  5.        ' Set ie = CreateObject("internetexplorer.application") '使用此方式可以免除 "設定引用項目"
  6.         With CreateObject("internetexplorer.application")
  7.            .Visible = False 'True為開啟ie, False為不開啟ie
  8.            '.Visible = 1
  9.             .navigate url
  10.             Do While .Busy Or .readyState <> 4 '等待網頁開啟
  11.             DoEvents
  12.             Loop
  13.             If .Document.Title = "您尚未連線到網路" Then
  14.                 '如網路沒有連線時, IE的表頭="Internet Explorer 無法顯示網頁"                '
  15.                 .Quit
  16.                 MsgBox "您尚未連接到網路,請檢查網路狀態後再試一次"    ' 離開前顯示一小視窗提醒,按它後即結束。
  17.                 GoTo Re
  18.             End If
  19.             .ExecWB 17, 2 'Select All
  20.             .ExecWB 12, 2 'Copy selection
  21.             Range("A1").Activate
  22.             ActiveSheet.PasteSpecial Format:="HTML", link:=False, DisplayAsIcon:= _
  23.                 False, NoHTMLFormatting:=True
  24.             .Quit
  25.         MsgBox "資料複製結束"    ' 離開前顯示一小視窗提醒,按它後即結束。
  26.         End With
  27. Re:
  28. End Sub
複製代碼





歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)