我需要每天在特定的时间运行我的excel VBA。我在谷歌上搜索了ontime方法,但我并没有从它得到一个全面的理解。我会提出这个来清理我对ontime方法的困惑。
包含的excel工作簿在运行之前是否必须为ontime方法打开。如果是,有没有办法在特定时间自动打开excel工作簿?我知道这可能是由定时器或Windows任务计划程序完成的。有人能帮我解决这个问题吗。我当前的代码是否为自动任务调度程序正确构造?
我当前的代码如下所示:
Sub StartTimer()
Application.OnTime EarliestTime:=TimeValue("11:15:00"), Procedure:="rune", _
Schedule:=True
End Sub
Sub rune()
SourceOneUpdate
SourceTwoUpdate
SourceThreeUpdate
GenerateReport
End Sub
Private Sub workbook_open()
StartTimer
End Sub这是基于这篇文章中的想法:http://www.cpearson.com/excel/OnTime.aspx,这可能会有帮助。即使此工作簿是打开的,它也不会自动运行。有人能帮我看看为什么这个不能正常工作吗?
提前谢谢。
发布于 2013-08-21 21:24:28
只是为了扩大d-stroyer的评论。
首先需要确保宏设置始终处于启用状态,因为这将确保每次打开工作簿时,宏都会在没有任何通知或确认的情况下运行。
要做到这一点,
Excel选项>信任中心>信任中心设置(按钮)>宏设置>启用所有宏>确定
现在您的宏已启用,您需要确保工作簿一打开,宏就会立即运行。因此,转到VB编辑器并打开ThisWorkbook模块>创建一个workbook_open()事件,然后将"OnTime代码“复制并粘贴到workbook_open事件>保存和关闭中
现在,每次打开工作簿时,工作簿都应该在8:47运行所需的代码。
进入Task Scheduler,在右边点击"Create Basic Task...“。为任务指定一个名称,然后单击next。选择一个触发器(在这里提到的情况下是Daily),然后单击next。设置时间和重复周期,然后单击下一步。在操作中,选择“启动程序”并单击“下一步”。在“程序/脚本”文本框中,浏览到Excel文件,然后单击“下一步”(将其他文本框留空)。单击Finish。我刚刚在我的电脑上试过了,它可以工作了。
From Windows Help Forum
PS:确保你的日程安排在8:47之前打开excel文件(所以可能是8:46)。
干杯,
公园
编辑:尝试运行此命令以查看您的OnTime是否正常工作。
Sub RunOnTime()
Application.OnTime Now + TimeSerial(0, 0, 10), "theSub"
End Subhttps://stackoverflow.com/questions/18358214
复制相似问题