捕获/读取消息显示在Excel应用程序状态栏中

我创build了VBA代码来更新Excel工作表,刷新数据连接并保存Excel工作表。

问题是:在数据连接仍在刷新的时候,VBA代码移动到保存Excel的下一步,并popup一个提示用户取消刷新的提示(这不应该是因为刷新必须发生并且用户input失败了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 

在这里输入图像说明 问题:如何在状态栏中捕获这些文本,以便我可以等到它消失? Application.StatusBar不会做的伎俩。

这里有几件事要尝试:

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