【Python】エクセルのマクロを実行する

CODE,Python

Pythonからエクセルのマクロを実行するコードです。
Pythonから制御することで既存のVBAコードを活用することができます。

マクロの準備

エクセルファイルに下記のマクロを定義しておきます。

Sub test()

    MsgBox ("マクロのテスト")

End Sub

マクロを実行するPythonのコード

エクセルのマクロを指定して実行するコードです。

ここでは読み取り専用(ReadOnly=1)で開いているため、SaveChanges=1 を指定しても保存されません。

# ----------------------------------------
# モジュールのインポート
# ----------------------------------------
import win32com.client


# ----------------------------------------
# 変数の設定
# ----------------------------------------
# ファイルパス
folder_path = 'C:\\temp\\'
macro_file = 'test.xlsm'
file_path = folder_path + macro_file


# ----------------------------------------
# マクロの実行
# ----------------------------------------
# Excelを起動する
app = win32com.client.Dispatch('Excel.Application')

# Excel起動時の表示設定 0:非表示 1:表示
app.Visible = 0

# 指定したブックを開く
app.Workbooks.Open(Filename=file_path, ReadOnly=1)

# マクロ名を指定して実行
app.Application.Run('ThisWorkbook.test')

# ブックを保存せずに閉じる
app.Workbooks(1).Close(SaveChanges=0)

# Excelを終了
app.Application.Quit()

CODE,Python

Posted by junichi