簡體   English   中英

有什么方法可以自動執行VBA宏?

[英]Is there any way to automatically execute a VBA macro?

我想設置計算機,使其每天自動執行在電子表格或訪問數據庫中編寫的VBA宏。

那么,有什么方法可以從批處理文件中調用VBA宏?

當然。 使用命令行開關時,提供的鏈接適用於有關命令行開關的頁面。 對於Access對於Excel

這是我在.bat文件中加載的示例,該文件加載msaccess文件,然后運行存儲的宏。

start msaccess "%localFolder%%localFileName%" /x %macroName%在這種情況下, %localFolder%%localFileName%會加到包含mdb / accdb文件的完整路徑中,而%macroName%是宏的名稱。

對於Excel,只需將要運行的任何內容放在Workbook.Open事件中。 然后使用類似以下的命令加載它: start excel %workbookPath%

這將創建一個新的Excel實例,打開工作簿,從而觸發Workbook.Open事件。 如果您認為您可以打開工作簿,則可能還希望傳遞只讀參數/r以便無需用戶輸入即可重新打開工作簿。

設置好.bat文件后,只需使用Windows Scheduler安排它們。

就個人而言,除非您的腳本是特定於Access或Excel的腳本,否則建議您使用.VBS重寫腳本,以便腳本可以運行而無需Excel或Access的開銷並安排該腳本。 :)

如果你想改變一個電子表格或訪問數據庫中的數據 ,你不妨用VBS和DAO對象:

Set Dbe = CreateObject("DAO.DBEngine.36") 

使用DAO更新數據的優點是,與Excel或Access應用程序相比,它是一個更小,更快,更輕的對象。 更強大,更穩定。 崩潰時不拋出消息框:不需要GUI登錄用戶。

僅使用DAO(或ADO)的缺點是它是一個更小,更快,更輕的對象:它無法執行打印或VBA之類的操作(盡管您可以讀取單元格,執行VBS計算,然后插入數據)。

特別是,DAO / ADO對象不能使Excel重新計算單元格值。 為此,您需要Excel。 而且它不能在Access中使用UDF。 為此,您需要訪問。

(您可以使用VBS自動執行Access / Excel,但這只是在Access / Excel之上添加了另一層,因此通常不是一個好主意。)

暫無
暫無

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

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