我试图一天运行4次宏。上午10:10,下午12:25,下午15:25和18:15。
此excel文件在早上打开,并全天打开。第二天,该文件将以新的日期名称重新保存并全天打开。
我认为我可以自动更新一次,但其余部分似乎不起作用。我使用网上发现的内容使它在上午10:10自动运行一次。
此部分位于“工作簿”和“打开”下的“ ThisWorkbook”中
Private Sub Workbook_Open()
Application.OnTime TimeValue("10:10:00"), "UpdateManifestpending"
End Sub
然后下一部分是宏的保存模块。宏仅刷新数据连接。
Sub UpdateManifestpending()
Application.OnTime TimeValue("10:10:00"), "UpdateManifestpending"
'
' UpdateManifestpending Macro
'
'
ActiveWorkbook.Connections("ManifestPendingUpdates").Refresh
End Sub
我不仅希望在10:10一次运行,而且还要在上述一天的其他时间运行。我尝试过使其每天运行4次,但似乎不起作用。
在“本工作簿”中
Private Sub Workbook_Open()
Application.OnTime TimeValue("10:10:00"), "UpdateManifestpending"
Application.OnTime TimeValue("12:15:00"), "UpdateManifestpending"
Application.OnTime TimeValue("15:25:00"), "UpdateManifestpending"
Application.OnTime TimeValue("15:25:00"), "UpdateManifestpending"
End Sub'
并在宏的ModuleID下
`Sub UpdateManifestpending()
Application.OnTime TimeValue("10:10:00"), "UpdateManifestpending"
Application.OnTime TimeValue("12:15:00"), "UpdateManifestpending"
Application.OnTime TimeValue("15:25:00"), "UpdateManifestpending"
Application.OnTime TimeValue("15:25:00"), "UpdateManifestpending"
'
' UpdateManifestpending Macro
'
'
ActiveWorkbook.Connections("ManifestPendingUpdates").Refresh
End Sub
`
我可能会误解此激活方式。 感谢您的帮助
答案 0 :(得分:2)
WorkBook_Open
在ThisWorkbook
的代码空间下
Private Sub Workbook_Open()
Call Scheduler
End Sub
在Module
代码空间下,您将拥有2组代码。
Sub Scheduler()
Application.OnTime TimeValue("10:10:00"), "UpdateManifestpending"
Application.OnTime TimeValue("12:15:00"), "UpdateManifestpending"
Application.OnTime TimeValue("15:25:00"), "UpdateManifestpending"
Application.OnTime TimeValue("15:25:00"), "UpdateManifestpending"
End Sub
Sub UpdateManifestpending()
'Code here
End Sub
您将需要允许以编程方式访问VB项目
导航到Trust Center > Macro Settings
并选择Trust access to the VBA project object module
答案 1 :(得分:1)
在公共模块中,放入此动态调度代码。
sub runWhen()
Select Case Time
Case Is < TimeSerial(10, 10, 0)
Application.OnTime TimeSerial(10, 10, 0), "UpdateManifestpending"
Case Is < TimeSerial(12, 25, 0)
Application.OnTime TimeSerial(12, 25, 0), "UpdateManifestpending"
Case Is < TimeSerial(15, 25, 0)
Application.OnTime TimeSerial(15, 25, 0), "UpdateManifestpending"
Case Is < TimeSerial(18, 15, 0)
Application.OnTime TimeSerial(18, 15, 0), "UpdateManifestpending"
End Select
end sub
在此工作簿中,
Private Sub Workbook_Open()
runWhen
End Sub
在End Sub之前将调度添加到UpdateManifestpending。
sub UpdateManifestpending()
'lots of code here
runWhen
End Sub