【发布时间】:2019-01-22 19:46:26
【问题描述】:
我有一个非常基本的 VBScript,我希望能够从任务计划程序调用它来打开一个 Excel 文档,刷新所有内容,然后保存并关闭它。 我一直在玩我在网上找到的各种代码(因为我对此很陌生),我可以让它打开并刷新所有代码,但是 VBScript 在保存和/或关闭工作簿之前关闭。
我已尝试添加“WScript.Sleep”(具有不同的时间)以及 DoEvents 以允许 Excel 完成,但在保存和关闭工作簿之前脚本仍会关闭。
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook =
objExcel.Workbooks.Open("\\llfs01\ReportHub(Shoals)\Sales\Daily
Reports\F&I Daily Reports\CIT Report.xlsm")
objExcel.Application.Visible = True
objExcel.DisplayAlerts = False
objExcel.AlertBeforeOverwriting = False
objWorkbook.WorkSheets(1).Activate
objWorkbook.RefreshAll 'Refresh everything
objWorkbook.DoEvents 'Let Excel finish
WScript.Sleep 20000
objExcel.ActiveWorkbook.Save
DoEvents
objExcel.ActiveWorkbook.Close
我需要代码来打开工作簿(当我的电脑被锁定且无人看管时)、刷新工作簿中的所有数据、保存并关闭工作簿。
【问题讨论】:
-
删除
DoEvents和sleep因为它们是不必要的.. -
Excel 在执行下一个命令之前会先完成每个命令。
DoEvents很危险,绝对不能用来随机解决问题。在这里查看我的答案stackoverflow.com/questions/54176056/… -
谢谢。我已经阅读了您分享的帖子,并且我了解 DoEvents 可能会通过允许未经检查的情况运行并且脚本永远无法完成而导致问题。