我创建了更新Excel工作表的VBA代码,刷新数据连接并保存Excel工作表。
问题:当数据连接仍在刷新时,VBA代码将移至保存Excel的下一步,并出现提示用户取消刷新的弹出窗口(它不应该因为刷新必须发生并且用户输入失败了VBA代码的目的)。以下是一个片段:
wkb.Connections("Connection2").Refresh
While (InStr(1, Application.DisplayStatusBar, "Running background query") > 0)
Wend
wkb.Save
wkb.RefreshAll
While (InStr(1, Application.StatusBar, "Running background query") > 0)
Wend
wkb.Save
答案 0 :(得分:2)
这里有几件事要尝试:
1)转到连接属性并取消选中"启用后台刷新"。它应该等待刷新结束,然后再执行下一行代码。或者在代码中:
ActiveWorkbook.Connections("CONNECTION_NAME").ODBCConnection.BackgroundQuery = False
2)尝试CalculateUntilAsyncQueriesDone方法
Connections("CONNECTION_NAME").Refresh
Application.CalculateUntilAsyncQueriesDone
如果您在Excel 2010或更高版本中工作,它应该等到这一切都完成。
3)可能的第三个选项,只是一个DoEvents命令
Connections("CONNECTION_NAME").Refresh
DoEvents