2017-04-03 204 views
0

Tl:dr當Excel未打開時,查看是否有任何方法啓動Excel VBA宏。Excel關閉時啓動宏

長版本:我有一個宏從一組特定的網站獲取數據,並相應地更新電子表格。唯一的問題是數據會在不方便的時間更新,即星期一早上05.00(GMT)和星期四早上01.15(GMT)。

我需要的是一種Excel自啓動方式,收集數據,更新電子表格,然後關閉。這可能嗎?

+1

創建一個VbScript文件並編寫代碼來運行您的Excel宏,並安排它在所需的時間運行。 – ManishChristian

+0

這[問題及其答案](http://stackoverflow.com/q/10232150/7648526)應該有所幫助。 – SteveES

+0

是使用Windows TASK SCHEDULER來調用該過程。應該是一個相當簡單的過程,只需包含START A PROGRAM,應用程序名稱,EXCEL和文件名(包括路徑)即可。確保XLS在THISWORKBOOK中有一個WORKBOOK_OPEN子例程。如果你希望我能以正式答案拼出來。請告訴我。 – flaZer

回答

2

更容易 - 不需要VB腳本。

運行WINDOWS TASK SCHEDULER,使用Excel作爲應用程序設置作業。

enter image description here

你必須尋找EXCEL.EXE - 因爲我的版本,我在這裏找到:

"C:\Program Files (x86)\Microsoft Office\Office15\EXCEL.EXE"

下一頁提供參數的完整路徑宏嵌入式Excel文件。 對於我的測試,我在我的桌面上調用的文件:

C:\Users\br12260\Desktop\TimeSeries.xls

然後,只需確保您的工作簿在ThisWorkbook模塊的Workbook_Open程序觸發您的代碼:

enter image description here

2

如果我是你,我會這樣說:

起初我安裝第三方程序,與我打開XLSM文件,在需要時。

一旦Excel打開了電子表格,您可以創建一個Sub Workbook_Open()例程來自動運行您的宏。您的宏可以在完成後關閉電子表格,然後退出Excel。

1

最好的方法是寫一個VB.net腳本來做到這一點。

最簡單的方法是在夜間離開電腦開啓並按照this簡明教程:

Public dTime As Date 
Dim lNum As Long 

Sub RunOnTime() 
    dTime = Now + TimeSerial(0, 0, 10) 
    Application.OnTime dTime, "RunOnTime" 

    lNum = lNum + 1 
    If lNum = 3 Then 
     Run "CancelOnTime" 
    Else 
     MsgBox lNum 
    End If 

End Sub 

Sub CancelOnTime() 
    Application.OnTime dTime, "RunOnTime", , False 
End Sub 

另一種方式是使用Windows計劃,寫在this answer