
Pythonから
・VBAのプロシージャを実行
できます!

この記事では
・Pythonライブラリ「xlwings」を使用
する方法を紹介します!
※Pythonライブラリ「win32com」でも出来ますが今回は割愛します。
前提
・Pythonがインストールされていること
・Pythonライブラリ「xlwings」がインストールされていること
VBAのコード
ここでは例として、
・デスクトップ配下のExcelファイル「sampl_001.xlsm」の
・モジュール「testModule」に
・Subプロシージャ「sample」
を作成します。


Sub sample()
'メッセージ出力
MsgBox ("VBAからのメッセージ出力です!")
End Sub
Pythonのコード
ここでは例として、
・上記で作成したVBAコードを実行する
・Pythonファイルを作成
します。

import xlwings as xw
# Excelファイルのパスを指定
excelFile = r"C:\Users\user\Desktop\sampl_001.xlsm"
# 対象モジュールを指定
module = "testModule"
# プロシージャ(マクロ)を指定
proc = 'sample'
# Excel起動
App = xw.App(visible=False)
# ExcelファイルOPEN
wb = App.books.open(excelFile)
# プロシージャ実行
macro=wb.macro(module + '.' + proc)
macro()
# ExceファイルCLOSE
wb.close()
# Excel終了
App.quit()
実行結果
上記で作成したPythonファイル「excel_vba実行サンプル.py」を実行すると、PythonからVBAのプロシージャが実行できたことを確認できます。


参考①
Power ShellからVBAのプロシージャを実行することもできます。
詳細は以下の記事をご確認ください。
参考②
バッチファイルからVBAのプロシージャを実行することもできます。
詳細は以下の記事をご確認ください。
参考③
VBSscriptからVBAのプロシージャを実行することもできます。
詳細は以下の記事をご確認ください。
参考④
Pythonライブラリ「xlwings」の詳細は、公式サイトをご確認ください。