【发布时间】:2017-08-11 14:58:25
【问题描述】:
我创建了用于更新 Excel 工作表、刷新数据连接并保存 Excel 工作表的 VBA 代码。
问题:当数据连接仍在刷新时,VBA 代码移动到保存 Excel 的下一步,并出现提示用户取消刷新的弹出窗口(其中这不应该是因为必须进行刷新并且用户输入破坏了 VBA 代码的目的)。下面是一个sn-p:
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
【问题讨论】:
-
将
DoEvents命令而不是While..Wend循环工作? support.microsoft.com/en-us/kb/118468 -
最简单的解决方案是在连接属性中关闭后台查询选项(如果可用)。
-
你的第一个是检查状态栏是否显示
While Application.StatusBar = "testing ddddddd": DoEvents: Wend -
Application.statusbar仅返回使用代码显示在状态栏(左角)的文本。在所有其他时间它只返回False。