この記事では、Excelを起動せずにVBAを実行する方法をVBScriptを使用して紹介します。
うめ
VBAを実行するためのボタンやブックを閉じる処理を割愛できるので便利です。
VBScriptでマクロを実行するサンプルコード
ほぼコピペで使えるようにしていますが、一部修正が必要です。
まずは下記のコードをメモ帳などに貼り付けてください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
Dim objExcel 'Excelのオブジェクトを作成 Set objExcel = CreateObject("Excel.Application") 'Excelは非表示 objExcel.Application.Visible = false '実行するVBAを指定 objExcel.Workbooks.Open ("C:\sample.xlsm") '実行するプロシージャ名を指定 objExcel.Application.Run "sample" '終了時に保存を確認しない objExcel.DisplayAlerts = False '終了処理 objExcel.Quit Set objExcel = Nothing |
“C:\sample.xlsm“の部分に動かしたいマクロの格納先を設定して下さい。
1 |
objExcel.Workbooks.Open ("C:\sample.xlsm") |
うめ
サンプルはC直下に置いています。
“sample“の部分に実行するプロシージャ名を設定してください。
1 |
objExcel.Application.Run "sample" |
VBAを実行すると「VBScriptファイルから実行しました。」とメッセージが表示されます。
1 2 3 4 5 |
Sub sample() MsgBox "VBScriptファイルから実行しました。" End Sub |
マクロの格納先、プロシージャ名修正したら名前をつけて保存。
最後に拡張子を「vbs」に変更します。
準備はこれだけです!
注意点
サンプルコード通りしたのに動かないという場合は、マクロの格納先、プロシージャ名に間違いがないか確認してください。
下記のエラーは意図的にプロシージャ名を違う名称に変更してから実行した結果です。何行目がエラーになっているか教えてくれるので、該当箇所のコードを修正してください。
実行結果
作成した「Sample.vbs」を実行するとsampleプロシージャが動き、設定しておいたメッセージが表示されます。