我有一个Excel工作簿,该工作簿使用功能查询从另一个工作簿中检索数据。当我手动打开工作簿时,它会自动更新,但是当我从VBScript调用它时(有些人最近帮我解决了另一个工作簿),它不会更新。
我所使用的代码与某些人在另一本工作簿上帮助我的代码相同,但不适用于此代码。 我还尝试将autoexec宏放入我的工作簿中,还尝试了工作簿中的一些VBA代码来刷新数据。当我手动打开工作簿时,这两种方法都起作用,但是当我从VBScript中打开工作簿时,它们都不更新。我也尝试过从VBScript中调用宏,但这也没有用。 这是我的代码:
Dim s
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook =
objExcel.Workbooks.Open("\\FilePath\Daily Snapshot.xlsm")
s = objExcel.ActiveWorkbook.BuiltinDocumentProperties("Last Save Time")
objExcel.Application.Visible = True
objExcel.DisplayAlerts = False
objExcel.AlertBeforeOverwriting = False
objWorkbook.WorkSheets(1).Activate
objWorkbook.RefreshAll
objExcel.ActiveWorkbook.Save
Do Until objExcel.ActiveWorkbook.BuiltinDocumentProperties("Last Save
Time") > s
Loop
'objExcel.ActiveWorkbook.Close
我也尝试过使用DoEvents(以前没有告诉过我),但是奇怪的是,当我包含DoEvents时,我收到了有关它的VBScript错误消息,但是当错误消息弹出时,则当错误消息出现在屏幕上时,我的数据确实刷新了,但是脚本的其余部分当然没有完成(这是保存和关闭部分)?在我看来,也许代码需要某种中断才能运行刷新,但是我知道这是“最后节省时间”和当前节省时间之间已经存在的目的。 它似乎在RefreshAll部分上失败了(不仅仅是因为它没有刷新,而且还没有保存我的工作簿,后者是RefreshAll之后的下一部分)。 但是,如果我不注释掉ActiveWorkbook.Close部分-它确实会关闭工作簿。谢谢您的帮助!
答案 0 :(得分:0)
打开命令的参数updateLinks是否有帮助?
Workbooks.Open Filename:="\\FilePath\Daily Snapshot.xlsm", updatelinks:=1
还是Application属性?
Application.UpdateLinks = True
'Variant 1:
Dim s
Set objExcel = CreateObject("Excel.Application")
objExcel.UpdateLinks = True
Set objWorkbook =
objExcel.Workbooks.Open("\\FilePath\Daily Snapshot.xlsm")
..,
'Variant 2:
Dim s
Set objExcel = CreateObject("Excel.Application")
objExcel.Workbooks.Open FileName:="\\FilePath\Daily Snapshot.xlsm", UpdateLinks:=1
Set objWorkbook = objExcel.activeworkbook
...
答案 1 :(得分:0)
这是我认为必须完成的工作,才能使其正常工作。我必须去编辑Excel查询(连接)属性-我取消选择了“刷新控制”区域中的所有内容(取消选择“打开时刷新”,取消选择“启用背景刷新”以及““全部刷新时刷新此连接””以外的所有其他选项-我保留了该选择并我以前发布的原始代码现在可以正常使用了。