2013-08-21 33 views
2

我需要在特定時間每天運行我的Excel VBA。我google的ontime方法,但我沒有得到它的全面理解。我會提出這個來清理我對時間方法的困惑。Excel OnTime Events Scheduler

包含excel工作簿是否必須在運行之前爲運行時方法打開。如果是,是否有辦法在特定時間自動打開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其中蟎是有幫助的。即使這個工作簿是開放的,它也不會自動運行。有人可以幫助我看到爲什麼這不能正常工作。

在此先感謝。

+1

事實上,宏將只有在工作簿打開運行。要麼保持工作簿打開,要麼 - 您可以按照您的建議 - 使用調度程序來運行「excel.exe yourfile.xlsm」。然後將您的宏綁定到工作簿「WorkBook_Open」事件,並檢查當前時間。 –

+0

@ d-stroyer可以很容易地成爲一個有效的答案 – 2013-08-21 13:18:11

回答

5

只是爲了擴大d-stroyer的評論。

您首先需要確保您的宏設置始終處於啓用狀態,因爲這樣可以確保每次打開工作簿時,宏都會在沒有任何通知或確認的情況下運行。

要做到這一點,
Excel選項>信任中心>信任中心設置(按鈕)>宏設置>啓用所有宏> OK

現在,您的宏被啓用,你需要確保宏將在工作簿打開後立即運行。所以,去你的VB編輯器打開的ThisWorkbook模塊>創建workbook_open()事件和複製並粘貼「準時代碼」到workbook_open事件>保存&關閉

現在,每次您打開工作簿,工作簿應該在8:47運行所需的代碼。

轉到任務計劃程序,右鍵單擊「創建基本任務...」。給任務一個名稱,然後單擊下一步。選擇一個觸發器(每天在這裏提到的情況下),然後點擊下一步。設置時間和重複週期,然後單擊下一步。在操作中,選擇「啓動程序」,然後單擊下一步。在程序/腳本文本框中瀏覽您的Excel文件,然後單擊下一步(將其他文本框留空)。點擊完成。我現在只是在我的電腦上試過這個,而且工作正常。

From Windows Help Forum

PS:請確保您設置調度程序打開Excel文件前8:47(所以也許8:46)。

乾杯,
kpark

編輯:嘗試運行此,看看你的導通時間的工作..

Sub RunOnTime() 
    Application.OnTime Now + TimeSerial(0, 0, 10), "theSub" 
End Sub