VBA实现Web查询完成时消息框通知(替代定时器)
解决Web Query刷新完成后自动通知的方法
原来的固定等待时间方式不够灵活,你可以通过QueryTable的事件监听实现刷新完成时自动通知,具体步骤如下:
插入类模块
- 按
Alt+F11打开VBA编辑器,右键点击项目列表,选择「插入」→「类模块」。 - 按
F4调出属性窗口,将类模块名称改为QueryTableMonitor。
- 按
编写类模块的事件代码
在类模块中粘贴以下代码,用于监听刷新完成事件:Public WithEvents qt As QueryTable Private Sub qt_AfterRefresh(ByVal Success As Boolean) If Success Then MsgBox "Web Query刷新完成!" Else MsgBox "Web Query刷新失败,请检查连接或数据源!" End If End Sub编写刷新执行的宏代码
在标准模块(如Module1)中替换原宏代码:Dim monitor As QueryTableMonitor Sub Pull_data_from_JSE_Website() Set monitor = New QueryTableMonitor ' 指定要刷新的Web Query(此处取Raw Data工作表的第一个QueryTable,可根据实际调整序号) Set monitor.qt = Sheets("Raw Data").QueryTables(1) ' 启动异步刷新,完成后自动触发通知 monitor.qt.Refresh BackgroundQuery:=True End Sub
关键说明
- 该方式通过事件触发通知,无需固定等待时间,刷新完成立刻弹出提示。
- 若工作表中有多个Web Query,可循环遍历
Sheets("Raw Data").QueryTables实现逐个监控。 BackgroundQuery:=True保持异步刷新,不会卡住Excel的其他操作。
内容的提问来源于stack exchange,提问作者Chase Ashley
相关产品推荐
相关产品推荐

