[Excelマクロ]WindowsコマンドプロンプトからExcelマクロを実行する

はじめに

手作業が億劫でExcelマクロを作っていくと、今度はExcelマクロを動かすことが億劫になってきたりします。

Excelマクロコマンドラインから実行できるようにしておくと、いつかJenkins等で定期実行をする時などに役に立つかと思います。

方式

Windowsコマンドプロンプトから直接Excelマクロを呼び出すのは難しいようなので、間にVBScriptを挟みます。

  1. Windowsコマンドプロンプトからマクロ実行用VBScriptを呼び出す
    引数:①Excelファイル名
       ②実行するマクロ名
  2. マクロ実行用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"

コメント

タイトルとURLをコピーしました