如何使用 Application.OnTime 每天在设定的时间调用宏,而无需关闭工作簿

Sha*_*e K 4 excel ontime vba

我编写了一个使用 Application.OnTime 的宏,如果我手动执行该宏,它就可以工作。我正在尝试自动执行此过程,因此我不必在“此工作簿”或(Private Sub Workbook_Open() 中编写 Application.OnTime 大多数人这样做是因为您可以让 Windows 调度程序在特定时间打开工作簿在打开时启动宏。我无法使用调度程序。

因为我无法使用 Windows 调度程序,所以我将保持工作簿打开,计时器应该刷新我的数据,然后每天在特定时间调用“我的宏”。

我在哪里放置此代码,以及如何设置自动计时器?

Kaz*_*wor 5

您可以创建一种重复程序。它可能如下所示:

Sub Call_At_3_30()
    'first call appropriate procedure 
    Call myProcedure
    'next, set new calling time
    Application.OnTime TimeValue("3:30:00"), "Call_At_3_30"
End Sub
Run Code Online (Sandbox Code Playgroud)

在某个地方你会保留你的主要程序,在这种情况下:

Sub myProcedure
    'your code here
End Sub
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您只需要运行第一个子程序Call_At_3_30一次。但您需要记住,Excel 必须始终处于打开状态。

或者,如果您想在 24 小时后调用您的程序,您可以.OnTime通过以下方式更改指令:

Application.OnTime Now + 1, "Call_At_3_30"
Run Code Online (Sandbox Code Playgroud)

其他一些修改也是可能的。