小さい頃はエラ呼吸

いつのまにやら肺で呼吸をしています。


コマンドラインからExcelマクロを実行する

はじめに

Excelファイル内にあるマクロを実行するためには、Excelを一度手動で開かないといけません。定期的に実行するようなExcelマクロがあった場合、毎回Excelを開いて、マクロを実行するのは面倒です。

そこで、コマンドラインからExcelマクロを実行することができないかを調べてみました。

Excelを画面に出さずに、マクロを、コマンドラインから引数つきで呼び出す - ウィリアムのいたずらの開発日記Excelを画面に出さずに、マクロを、コマンドラインから引数つきで呼び出す - ウィリアムのいたずらの開発日記

Excel VBA 逆引き辞典パーフェクト 2010/2007/2003対応
田中 亨
翔泳社
売り上げランキング: 8,933

コマンドラインからExcelマクロを実行する

1.以下のソースを「execMacro.vbs」という名前で保存します。

Dim excelApp : Set excelApp = CreateObject("Excel.Application")
' Excelを非表示にする
excelApp.Visible = False

Dim targetFile : targetFile = WScript.Arguments(0)
Dim targetMacro : targetMacro = WScript.Arguments(1)
' Excelファイルを開く
excelApp.Workbooks.Open targetFile
' マクロの実行
excelApp.Run targetMacro
' Excelの終了
excelApp.Quit

2.execMacro.vbsを以下のような形式で呼び出します。

cscript execMacro.vbs "Excelファイルのフルパス" "実行するマクロ名"

これでコマンドラインからExcelマクロを実行することができます。

ダイアログを表示するマクロに注意

マクロ内でMsgBox関数などを使っている場合は、マクロ実行時にダイアログが表示されてしまいます。
ダイアログを手動で閉じるまではExcelが動いている状態なので、ダイアログが表示されたら手動で閉じてください。

関連記事