2

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

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

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

提前致谢。

4

1 回答 1

5

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

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

为此,
Excel 选项 > 信任中心 > 信任中心设置(按钮)> 宏设置 > 启用所有宏 > 确定

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

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

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

来自 Windows 帮助论坛

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

干杯,
kpark

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

Sub RunOnTime()
    Application.OnTime Now + TimeSerial(0, 0, 10), "theSub"
End Sub
于 2013-08-21T13:24:27.583 回答