返回列表 上一主題 發帖

[發問] 下載中斷問題

本帖最後由 luhpro 於 2013-11-16 09:33 編輯

回復 1# spermbank
這種情形最常見的處理方式就是加上錯誤處理.

因為附檔在我的 Excel 2003 執行時會一直有錯誤,
所以我自己另外做了一個檔案,
你可以參照著修改你的程式.
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.   Dim i%, j&
  3.   Dim bErr As Boolean
  4.   
  5.   On Error GoTo errGet
  6.   
  7.   bErr = False
  8.   For i = 1 To 6
  9.     j = j + i
  10.     If i = 3 Then Err.Raise 1004 ' 此行模擬網頁讀取失敗,發生 1004 錯誤
  11.     If Not bErr Then
  12.       MsgBox "執行讀取網頁的動作, i = 3 時會模擬發生錯誤, 目前 i =" & i
  13.     Else
  14.       MsgBox "網頁讀取失敗後的處理,例 : 重讀, 等幾秒..., i = 3 時會模擬發生錯誤, 目前 i =" & i
  15.       bErr = False
  16.     End If
  17.   Next
  18.   
  19. On Error GoTo 0
  20. Exit Sub
  21.   
  22. errGet:
  23.   If Err.Number = 1004 Then bErr = True
  24.   Resume Next
  25. End Sub
複製代碼
Desktop-a.zip (7.26 KB)

TOP

本帖最後由 luhpro 於 2013-11-16 22:50 編輯

回復 3# spermbank
以下程式放在 Module 內 :
  1. Public bStop As Boolean
複製代碼
Sub 下載基本資料()
  .
  .
  .
    更新資料 a '執行12檔案更新
   If bStop Then Exit For
  .
  .
  .
End Sub


Sub 更新資料(a)
  Dim Sh As Worksheet, MyURL$, MyQy As QueryTable
  Dim iI%, lJ&, OpenForms  
  .
  .
  .
  On Error GoTo errGet
              .Refresh '更新
  On Error GoTo 0
            End With
        End If
        End With
    Next
    End With
    fs = Dir()
    Loop
    End With
  Exit Sub
   
: errGet
  If Err.Number = 1004 Then
    For lJ = 1 To 5000 ' 讀取網頁失敗時, 等一段時間再重讀一次, 若連續5次失敗,則中止讀取.
      If lJ Mod 1000 = 0 Then OpenForms = DoEvents ' 每隔一段時間將控制權還給Windows處理其他程式的作業.
    Next
    iI = iI + 1
    If iI > 10 Then
      bStop = True
      MsgBox "讀取網頁失敗, 程式終止..."
      Exit Sub
    End If
    Resume
  Else
    Resume Next
  End If

End Sub

TOP

        靜思自在 : 發脾氣是短暫的發瘋。
返回列表 上一主題