Excel OnTime事件计划程序

YoY*_*Yue 2 excel vba excel-vba

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

包含excel工作簿是否必须在运行之前打开ontime方法.如果是,是否有办法在特定时间自动打开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
Run Code Online (Sandbox Code Playgroud)

这是基于这篇文章的想法:http://www.cpearson.com/excel/OnTime.aspx哪个有用.即使这个工作簿是开放的,它也不会自动运行.有人可以帮助我,看看为什么这不正常.

提前致谢.

kpa*_*ark 5

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

首先需要确保您的宏设置始终处于启用状态,因为这样可以确保每次打开工作簿时,宏都会运行而不会发出任何通知或确认.

为此,请执行以下操作:
Excel选项>信任中心>信任中心设置(按钮)>宏设置>启用所有宏>确定

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

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

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

从Windows帮助论坛

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

干杯,
kpark

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

Sub RunOnTime()
    Application.OnTime Now + TimeSerial(0, 0, 10), "theSub"
End Sub
Run Code Online (Sandbox Code Playgroud)