返回列表 上一主題 發帖

(發問)WEB查詢,如何取消跳出的警告視窗

(發問)WEB查詢,如何取消跳出的警告視窗

各位先進,小弟有使用WEB查詢網頁資料,但常常會因為網路連線不良,出現以下訊息:

"此WEB查詢沒有傳回資料,要修改查詢,按[確定],按資料編輯列上的名稱方塊中的外部資料範圍,然後按[外部資料]工具列上的[編輯查詢]。"

必須將這訊息點掉,才能繼續更新WEB查詢的資料,常常程式跑一半卡住,非常困擾。
有試過Application.DisplayAlerts = False 或 Application.EnableEvents = false或On error resume  next
不過都沒有用,請各位先進指點一下,感激不盡。

謝謝您的回覆。
不過就是程式抓不到Error,否則用On Error Resume  Next就有用了。
因此有嘗試過您的方法,就是跳不到ErrorFix,因此就沒辦法用Err.Number來處理了。
所以此錯誤"此WEB查詢沒有傳回資料,要修改查詢,按[確定],按資料編輯列上的名稱方塊中的外部資料範圍,然後按[外部資料]工具列上的[編輯查詢]。"還是繼續產生,無法消除。
請問還有其他idea嗎?還是非常謝謝您撥冗回覆~~
Hi~

TOP

謝謝您的回覆,已經試了您的寫法,還是沒有辦法抓到錯誤視窗的事件來處理。
附上檔案好了。
Sheet2的資料會隨著Sheet1的A1~A3來做WEB查詢變動,因此設計C1~C3 copy過去改變A1~A3時進行WEB查詢。
C2的數值70645291是故意設計查詢不到的,想藉此練習碰到警告視窗要如何處理,請先進指點一下,感謝~

Book1.rar (8.81 KB)

    Sub Ex2()
        Dim t As Date
        t = Time
        On Error Resume Next
        
    Worksheets("Sheet1").Activate
    Range("A1:A3").Value = Range("C1:C3").Value
        
        Do
            Err.Clear
            Sheet1.QueryTables(1).Refresh False
            If Err.Number > 0 Then                 'Web查詢 失敗
                GoTo J:
            End If
        Loop While Err.Number > 0

J:

    MsgBox "Game over"
   
    End Sub
Hi~

TOP

謝謝先進GBKEE版主指點迷津,現在才知道Querytables的用法,真的很受用。
不過,還是會跳出
"此WEB查詢沒有傳回資料,要修改查詢,按[確定]......."等的訊息
必須將這訊息點掉,才能繼續更新WEB查詢的資料,常常程式跑一半卡住,非常困擾。
再次斗膽請教,有方法讓這訊息不要跳出來嗎?
Hi~

TOP

謝謝您用心指導,在Module1執行Ex.
不知道我這樣寫對不對,請幫我確認,因為警告訊息還是會跑出來,哈哈。
附上檔案供您參考~ Book2.rar (12.47 KB)

模組Module1
    Sub Ex()
        Dim i As Integer, Test() As New Class1
        'Test指定為 新物件類別模組 :  Class1物件
        On Error Resume Next
        
        With Sheet1
            .Range("A1:A3").Value = .Range("C1:C3").Value
        End With
   
        For i = 1 To Sheet2.QueryTables.Count
            ReDim Preserve Test(1 To i)
            Set Test(i).Query = Sheet2.QueryTables(i)
            Test(i).Query.Refresh False
        Next
    End Sub

物件類別模式 Class1
   Option Explicit
    Public WithEvents Query As QueryTable    'Query指定為QueryTable物件
    Private Sub Query_AfterRefresh(ByVal Success As Boolean)   '查詢後的事件
      
      If Success = False Then    '查詢失敗   'Success = True   查詢成功
            With Query.ResultRange
                .Interior.ColorIndex = 37
                .Cells(1).Offset(1).Resize(.Rows.Count - 1, .Columns.Count) = "查無資料"
            End With
      End If
    End Sub
   
    Private Sub Query_BeforeRefresh(Cancel As Boolean)  '查詢前的事件
        With Query.ResultRange
                .Interior.ColorIndex = xlNone
        End With
    End Sub
Hi~

TOP

        靜思自在 : 【時間如鑽石】時間對一個有智慧的人而言,就如鑽石般珍貴;但對愚人來說,卻像是一把泥土,一點價值也沒有。
返回列表 上一主題