Excel VBA帮助在一天中的4点自动运行宏

时间:2018-12-12 02:46:11

标签: excel vba excel-vba

我试图一天运行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

`

我可能会误解此激活方式。 感谢您的帮助

2 个答案:

答案 0 :(得分:2)

  1. 代码1::一个调用调度程序宏的WorkBook_Open
  2. 代码2:您的调度程序宏,用于调用要在给定时间运行的代码
  3. 代码3::您的代码将在指定的时间运行
  4. Home Stretch::验证安全设置以允许执行这种类型的步骤系列

代码1

ThisWorkbook的代码空间下

Private Sub Workbook_Open()
    Call Scheduler
End Sub

代码2

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

代码3

Sub UpdateManifestpending()
    'Code here
End Sub

首页伸展

您将需要允许以编程方式访问VB项目

导航到Trust Center > Macro Settings并选择Trust access to the VBA project object module

enter image description here

答案 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