はじめに
業務自動化において,「既存マクロの実行」をPythonで実装したときの備忘録.
動作環境
- Python 3.12.0
- pywin32 306
pywin32はpipを使用してインストールできます.
pip install pywin32
準備
- Excelマクロが有効なxlsmファイルを準備する.
- モジュール名と実行するマクロ名を記憶する.
- Pythonスクリプトを書く.
今回使用するマクロとサンプルコードは以下になります.
マクロの実行コマンドでは,上図の標準モジュール名とsubプロシージャ名を必要とします.
ソースコード
sample.py
import win32com.client
excelFile = r"C:\qiita\macro.py"
try:
# Excelアプリケーションを起動
xlp = win32com.client.Dispatch('Excel.Application')
# Excelアプリケーション表示
xlp.Visible = True
# 警告ダイアログを非表示
xlp.DisplayAlerts = False
# マクロファイルを開く
wb = xlp.Workbooks.Open(excelFile)
# マクロ実行
xlp.Application.Run('sample.hogehoge')
# ファイルを保存して閉じる
wb.Close(SaveChanges = True)
finally:
# 警告ダイアログを表示
xlp.DisplayAlerts = True
# Excelアプリケーション終了
xlp.Quit()
pywin32はインストールするときと使用するときで名前が異なります.
ソースコードのL14 xlp.Application.Run('sample.hogehoge')
のカッコ内で実行するマクロを指定します.指定方法は (モジュール名.subプロシージャ名) です.
Quit()
でExcelを終了すると,もともと開いていたExcelファイルも閉じるので注意しましょう.