1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SuiSuiAdvent Calendar 2023

Day 9

PythonでExcelマクロを実行

Posted at

はじめに

業務自動化において,「既存マクロの実行」をPythonで実装したときの備忘録.

動作環境

  • Python 3.12.0
  • pywin32 306

pywin32はpipを使用してインストールできます.

pip install pywin32

準備

  1. Excelマクロが有効なxlsmファイルを準備する.
  2. モジュール名と実行するマクロ名を記憶する.
  3. Pythonスクリプトを書く.

今回使用するマクロとサンプルコードは以下になります.

image.png

マクロの実行コマンドでは,上図の標準モジュール名と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ファイルも閉じるので注意しましょう.

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?