我在 Excel 2003 中遇到了这个问题,但也许在早期版本中也存在这个问题。
我有一个 Excel 电子表格,它使用网络查询导入数据,该查询连接到我公司服务器中托管的网页。数据每天都在变化,URL 也是如此,因此我有一个宏来处理 URL 变化并每小时自动刷新所有数据。
它运行正常,但有时公司的服务器会崩溃。当我的宏尝试连接到服务器时,服务器却崩溃了,就会出现以下消息框:“无法打开。无法找到 Internet 服务器或代理服务器”。每当发生这种情况时,Excel 都会停止宏,直到我手动单击“接受”按钮,它才会继续。这是一个大问题,因为数据必须不断更新。
我寻找了很多方法来解决这个问题。我尝试在宏的顶部添加一个错误处理程序“Application.DisplayAlerts = False”,我也这样做了这,但无济于事。
这是我的代码:
Sub ChangeURL()
Application.DisplayAlerts = False
On Error Resume Next
Dim NewURL As String
Dim Today As String
'M1 contains today's date formatted as text
Today = Range("M1").Value
NewURL = "URL;http://www.example-url.com/data/date=" & Today
'Change the table's URL so it gets today's data
With ActiveSheet.QueryTables(1)
.Connection = NewURL
End With
ActiveWorkbook.RefreshAll
'Re-execute the macro after an hour has passed
Application.OnTime Now + TimeValue("01:00:00"), "Change", , True
Application.DisplayAlerts = True
End Sub
有没有办法真正禁用这些消息框?
答案1
类似这样的方法也许能起到作用。
Sub MyMacro()
code...code...code
....trying to connect....
On Error GoTo ErrorHandler
code...code...code
Exit Sub
ErrorHandler:
. . .
Resume <or Exit Sub>
. . .
End Sub