我有一个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/