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

时间:2016-06-16 12:36:56

标签: excel vba excel-vba

我创建了更新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

enter image description here 问题:如何在状态栏中捕获此文本,以便我可以等到它消失? Application.StatusBar没有做到这一点。

1 个答案:

答案 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