2013-08-21 108 views
2

我需要在特定时间每天运行我的Excel VBA。我google的ontime方法,但我没有得到它的全面理解。我会提出这个来清理我对时间方法的困惑。Excel OnTime Events Scheduler

包含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

事实上,宏将只有在工作簿打开运行。要么保持工作簿打开,要么 - 您可以按照您的建议 - 使用调度程序来运行“excel.exe yourfile.xlsm”。然后将您的宏绑定到工作簿“WorkBook_Open”事件,并检查当前时间。 –

+0

@ d-stroyer可以很容易地成为一个有效的答案 – 2013-08-21 13:18:11

回答

5

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

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

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

现在,您的宏被启用,你需要确保宏将在工作簿打开后立即运行。所以,去你的VB编辑器打开的ThisWorkbook模块>创建workbook_open()事件和复制并粘贴“准时代码”到workbook_open事件>保存&关闭

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

转到任务计划程序,右键单击“创建基本任务...”。给任务一个名称,然后单击下一步。选择一个触发器(每天在这里提到的情况下),然后点击下一步。设置时间和重复周期,然后单击下一步。在操作中,选择“启动程序”,然后单击下一步。在程序/脚本文本框中浏览您的Excel文件,然后单击下一步(将其他文本框留空)。点击完成。我现在只是在我的电脑上试过这个,而且工作正常。

From Windows Help Forum

PS:请确保您设置调度程序打开Excel文件前8:47(所以也许8:46)。

干杯,
kpark

编辑:尝试运行此,看看你的导通时间的工作..

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