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哪个有用.即使这个工作簿是开放的,它也不会自动运行.有人可以帮助我,看看为什么这不正常.
提前致谢.
只是为了扩展d-stroyer的评论.
首先需要确保您的宏设置始终处于启用状态,因为这样可以确保每次打开工作簿时,宏都会运行而不会发出任何通知或确认.
为此,请执行以下操作:
Excel选项>信任中心>信任中心设置(按钮)>宏设置>启用所有宏>确定
现在您的宏已启用,您需要确保在工作簿打开后宏将立即运行.因此,转到VB编辑器并打开ThisWorkbook模块>创建一个workbook_open()事件,并将"OnTime代码"复制并粘贴到workbook_open事件>保存并关闭
现在,每次打开工作簿时,工作簿都应该在8:47运行所需的代码.
转到任务计划程序,右键单击"创建基本任务...".为任务命名,然后单击"下一步".选择一个触发器(在此处提到的情况下为每日),然后单击"下一步".设置时间和重复周期,然后单击"下一步".在"操作"中,选择"启动程序",然后单击"下一步".在"程序/脚本"文本框中,浏览Excel文件,然后单击"下一步"(将其他文本框保留为空).单击"完成".我现在只是在我的电脑上试过这个,它确实有效.
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)