簡體   English   中英

獲取工作簿。每天開放以安排我的宏(不只是一次)

[英]Getting Workbook.Open To Schedule My Macro Everyday (Not just one time through)

我有一個宏,我試圖在第二天的晚上6點到230點之間每30分鍾運行一次。

我嘗試使用Workbook.Open和Application.OnTime來完成此操作,但我意識到它看起來只會將所有內容安排1次。 第二天,什么都沒跑。 我在ThisWorkbook VBA頁面中有此代碼。

我該如何修改它,使其在那一小時連續運行而不必關閉並重新打開工作表

Private Sub Workbook_Open()
Application.OnTime TimeValue("18:00:00"), "PopulateData"
Application.OnTime TimeValue("18:30:00"), "PopulateData"
Application.OnTime TimeValue("19:00:00"), "PopulateData"
Application.OnTime TimeValue("19:30:00"), "PopulateData"
Application.OnTime TimeValue("20:00:00"), "PopulateData"
Application.OnTime TimeValue("20:30:00"), "PopulateData"
Application.OnTime TimeValue("21:00:00"), "PopulateData"
Application.OnTime TimeValue("21:30:00"), "PopulateData"
Application.OnTime TimeValue("22:00:00"), "PopulateData"
Application.OnTime TimeValue("23:30:00"), "PopulateData"
Application.OnTime TimeValue("00:00:00"), "PopulateData"
Application.OnTime TimeValue("00:30:00"), "PopulateData"
Application.OnTime TimeValue("01:00:00"), "PopulateData"
Application.OnTime TimeValue("01:30:00"), "PopulateData"
Application.OnTime TimeValue("02:00:00"), "PopulateData"
Application.OnTime TimeValue("02:30:00"), "PopulateData"
Application.OnTime TimeValue("03:00:00"), "PopulateData"
Application.OnTime TimeValue("03:30:00"), "PopulateData"
Application.OnTime TimeValue("04:00:00"), "PopulateData"
Application.OnTime TimeValue("04:30:00"), "PopulateData"
Application.OnTime TimeValue("05:00:00"), "PopulateData"
Application.OnTime TimeValue("05:30:00"), "PopulateData"
Application.OnTime TimeValue("06:00:00"), "PopulateData"
Application.OnTime TimeValue("06:30:00"), "PopulateData"
Application.OnTime TimeValue("07:00:00"), "PopulateData"
Application.OnTime TimeValue("07:30:00"), "PopulateData"
Application.OnTime TimeValue("08:00:00"), "PopulateData"
Application.OnTime TimeValue("08:30:00"), "PopulateData"
Application.OnTime TimeValue("09:00:00"), "PopulateData"
Application.OnTime TimeValue("09:30:00"), "PopulateData"
Application.OnTime TimeValue("10:00:00"), "PopulateData"
Application.OnTime TimeValue("10:30:00"), "PopulateData"
Application.OnTime TimeValue("11:00:00"), "PopulateData"
Application.OnTime TimeValue("11:30:00"), "PopulateData"
Application.OnTime TimeValue("12:00:00"), "PopulateData"
Application.OnTime TimeValue("12:30:00"), "PopulateData"
Application.OnTime TimeValue("13:00:00"), "PopulateData"
Application.OnTime TimeValue("13:30:00"), "PopulateData"
Application.OnTime TimeValue("14:00:00"), "PopulateData"
Application.OnTime TimeValue("14:30:00"), "PopulateData"

End Sub

您可以使用以下命令簡化此操作:將以下內容放入ThisWorkbook

Private Sub Workbook_Open()
    Dim t As Long
    t = 24 / (30 / 60)
    Application.OnTime TimeValue(Format(WorksheetFunction.Ceiling(Now * t, 1) / t, "HH:mm:ss")), "UpdateCaller"
End Sub

哪個電話

Public Sub UpdateCaller()
    Dim tme As Date
    Dim t As Long

    If TimeValue(Format(Now, "HH:mm:ss")) <= TimeValue("14:30:00") Or TimeValue(Format(Now, "HH:mm:ss")) >= TimeValue("18:00:00") Then
        Call PopulateData
    End If

    t = 24 / (30 / 60)
    tme = TimeValue(Format(WorksheetFunction.Ceiling((Now + TimeValue("00:00:05")) * t, 1) / t, "HH:mm:ss"))
    Debug.Print "Procedure ""UpdateCaller"" will next run at: ", tme

    Application.OnTime tme, "UpdateCaller"
End Sub

您將需要保持工作簿處於打開狀態。 如果工作簿已關閉,則可以使用Windows Task Scheduler每30分鍾打開一次。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM