Excel OnTime事件计划程序

时间:2013-08-21 13:03:07

标签: vba excel-vba excel

我需要在特定时间每天运行我的excel VBA。我谷歌的ontime方法,但我没有得到全面的了解。我会提出这个来清理我对ontime方法的困惑。

在运行之前,是否必须为ontime方法打开包含的excel工作簿。如果是,是否有办法在特定时间自动打开excel工作簿。我知道它可以由Timer或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哪一个有帮助。即使这个工作簿是开放的,它也不会自动运行。有人可以帮我解决为什么这不能正常工作。

提前致谢。

1 个答案:

答案 0 :(得分:5)

只是为了扩展d-stroyer的评论。

首先需要确保您的宏设置始终处于启用状态,因为这样可以确保每次打开工作簿时,宏都会在没有任何通知或确认的情况下运行。

要做到这一点,
Excel选项>信托中心>信任中心设置(按钮)>宏设置>启用所有宏>行

现在您的宏已启用,您需要确保在工作簿打开后宏将立即运行。那么,转到VB编辑器并打开ThisWorkbook模块>创建一个workbook_open()事件,并将“OnTime代码”复制并粘贴到workbook_open事件>保存&关闭

现在,每次打开工作簿时,工作簿都应该在8:47运行所需的代码。

转到任务计划程序,右键单击“创建基本任务...”。为任务命名,然后单击“下一步”。选择一个触发器(在此处提到的情况下为每日),然后单击“下一步”。设置时间和重复周期,然后单击“下一步”。在“操作”中,选择“启动程序”,然后单击“下一步”。在“程序/脚本”文本框中,浏览Excel文件,然后单击“下一步”(将其他文本框保留为空)。单击“完成”。我现在只是在我的电脑上试过这个,它确实有效。

From Windows Help Forum

PS:确保将调度程序设置为在8:47之前打开excel文件(所以可能是8:46)。

干杯,
kpark

编辑:尝试运行此操作以查看您的OnTime是否正常工作..

Sub RunOnTime()
    Application.OnTime Now + TimeSerial(0, 0, 10), "theSub"
End Sub