
Power Shellから
・VBAのプロシージャを実行
できます!
VBAのコード
ここでは例として、
・デスクトップ配下のExcelファイル「sampl_001.xlsm」の
・Subプロシージャ「sample」
を作成します。


Sub sample()
'メッセージ出力
MsgBox ("VBAからのメッセージ出力です!")
End Sub
Power Shellのコード
ここでは例として、
・上記で作成したVBAコードを実行する
・Power Shellファイルを作成
します。
※デスクトップ配下に「excel_vba実行サンプル.ps1」を作成します。

# Excelファイルのパスを指定
$file = "C:\Users\user\Desktop\sampl_001.xlsm"
# プロシージャ(マクロ)を指定
$proc = "sample"
# Excelオブジェクトを取得
$excel = New-Object -ComObject Excel.Application
try
{
# ExcelファイルをOPEN
$book = $excel.Workbooks.Open($file)
# プロシージャを実行
$excel.Run($proc)
# ExcelファイルをCLOSE
$book.Close()
}
catch
{
$ws = New-Object -ComObject Wscript.Shell
$ws.popup("エラー : " + $PSItem)
}
finally
{
# Excelを終了
$excel.Quit()
[System.Runtime.InteropServices.Marshal]::FinalReleaseComObject($excel) | Out-Null
}
Power Shellの実行
Power Shellを起動して以下のコマンドを実行します。
powershell -NoProfile -ExecutionPolicy Unrestricted C:\Users\user\Desktop\excel_vba実行サンプル.ps1
実行結果
Power ShellからVBAのプロシージャが実行できました。

参考①
Power Shellからではなく、VBScriptからVBAのプロシージャを実行することもできます。
詳細は以下の記事をご確認ください。
参考②
Power Shellからではなく、バッチファイルからVBAのプロシージャを実行することもできます。
詳細は以下の記事をご確認ください。
参考③
VBAから他のブックのマクロ(VBAコード)を実行することもできます。
詳細は以下の記事をご確認ください。
参考④
姉妹サイトとして
・PowerShellのノウハウサイト
も運営しています。