我创建了 VBA 代码,用于更新 Excel 工作表、刷新数据连接并保存 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
最佳答案
这里有一些可以尝试的事情:
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
关于vba - 捕获/读取 Excel 应用程序状态栏中显示的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37859474/