我有一个Excel文件,该文件自动从外部数据库(通过与Accesss数据库的数据连接,该数据连接又链接到Sharepoint表)加载数据。我需要自动化以下过程:


打开Excel文件
等待数据刷新
运行宏(在此文件中)
关闭档案


我拥有的脚本是:

Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open("excel spreadsheet.xlsm")
WScript.Sleep 1000 * 60 * 5
objExcel.Run "macro_name"
objWorkbook.close False
objExcel.Application.Quit


但是,无论我在WScript.sleep中设置什么延迟,它都不会更新数据。而是在电子表格中已有的数据上运行宏。任何人都可以帮忙!





最后(并受益于几天的实时测试),以下内容似乎是最干净,最有效的:


完全从VB脚本中删除“ WScript.Sleep 1000 * 60 * 5”行
在Excel中,清除每个连接的“属性”中的“启用后台刷新”复选框
在主代码之前将以下行添加到宏

ActiveWorkbook.RefreshAll


非常感谢Philip和Santosh在下面为我指出正确方向的回答!

最佳答案

在您的工作簿中,您需要在运行代码之前刷新QueryTables中的数据。

为什么不在excel vba宏开头的querytable上调用Refresh方法?

关于excel-vba - 如何在VB脚本中设置延迟以让Excel更新数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16717438/

10-09 07:33
查看更多