はじめに
手作業が億劫でExcelマクロを作っていくと、今度はExcelマクロを動かすことが億劫になってきたりします。
Excelマクロをコマンドラインから実行できるようにしておくと、いつかJenkins等で定期実行をする時などに役に立つかと思います。
方式
Windowsコマンドプロンプトから直接Excelマクロを呼び出すのは難しいようなので、間にVBScriptを挟みます。
- Windowsコマンドプロンプトからマクロ実行用VBScriptを呼び出す
引数:①Excelファイル名
②実行するマクロ名
- マクロ実行用VBScriptでExcelファイルを開き、マクロを実行する
マクロ実行用VBScript
runMacro.vbs
' 【使い方】'
' C:\>cscript runMacro.vbs "Excelファイル名_フルパス" "実行するマクロ名"'
Dim excelApp,file,macro
file = WScript.Arguments(0)
macro = WScript.Arguments(1)
Set excelApp = CreateObject("Excel.Application")
excelApp.Visible = False ' Excelを非表示にする'
excelApp.DisplayAlerts = False ' ポップアップメッセージを非表示にする'
excelApp.AutomationSecurity = 1 ' マクロを有効にする'
' Excelファイルを読み取り専用で開く'
excelApp.Workbooks.Open file,3,True
WScript.Echo "---マクロ実行中---"
WScript.Echo " ファイル:" & file
WScript.Echo " マクロ:" & macro
' マクロを実行する'
excelApp.Run macro
WScript.Echo "---マクロの実行が完了しました---"
' Excelを終了する'
excelApp.Quit
Set excelApp = Nothing
「excelApp.AutomationSecurity = 1」は、「すべてのマクロを有効にする」という設定です。
マクロ実行用VBScriptを起動したときに、「このブックでマクロが使用できないか、またはすべてのマクロが無効になっている可能性があります。」というエラーメッセージが出た場合は、この設定が効いていることを確認してみてください。
実行方法
Windowsコマンドプロンプトで以下のコマンドを実行します。
cscript runMacro.vbs "C:\Users\User\マクロテスト.xlsm" "ThisWorkbook.test001"
コメント