今回はPythonにpywin32ライブラリを入れてWindows上のPythonからExcelのマクロを実行させてみた。
やったことは次の通り。
###(1) WindowsのPython環境にpywin32ライブラリをインストール
###(2) Excelマクロ有効ブック(xlsm)を用意する
今回は事前に簡単なマクロを記載したExcelマクロ有効ブック(xlsm)を用意した。
マクロは次の通り。
①メッセージ付きのポップアップウインドウを開く
②シートを追加してセルA1に文字を入力
###(3) Pythonで実行するExcel操作
①Excelアプリケーションを起動する
②Excelウインドウを表示する
③マクロ有効ブックを開く
④マクロを実行
1.標準モジュールmodule1のtest1マクロを実行
(ポップアップウインドウ)
2.標準モジュールmodule2のtest2マクロを実行
(シートを追加してセルA1に文字を入力)
⑤ファイルを保存してブックを閉じる
⑥Excelアプリケーションを終了する
###(4) Pythonコードを書く
###(5) Pythonを実行する
では実際にやってみる。詳細内容は下記の通り。
###■WindowsのPython環境にpywin32ライブラリをインストール
コマンドプロンプトを開きインストールする。
>pip install pywin32
###■Excelマクロが有効なブックを事前に作成しておく
【ファイル名】 excel03.xlsm
###■Excelマクロを事前に作成しておく
標準モジュールの配下にモジュールを追加してそれぞれマクロを作成する。
①Module1 test1マクロ(ポップアップウインドウを表示)
②Module2 test2マクロ(シートを追加してセルA1に文字列Testを入力)
###■Pythonコードを書く
【ファイル名】 excel03.py
import win32com.client #Win32comモジュールを呼び出す
excelapp = win32com.client.Dispatch('Excel.Application') #Excelアプリケーションを起動する
excelapp.Visible = 1 #Excelウインドウを表示する
excelapp.Workbooks.Open(r"C:\Users\ishimatsu\Desktop\excel03.xlsm") #rを追加してパス名をrawデータとして読み込みマクロ有効ブックを開く
excelapp.Application.Run('Module1.test1') #標準モジュールModule1のマクロtest1を実行する
excelapp.Application.Run('Module2.test2') #標準モジュールModule2のマクロtest2を実行する
excelapp.Workbooks(1).Close(SaveChanges=1) #ファイルを保存してブックを閉じる
excelapp.Application.Quit() #Excelを閉じる
###■Pythonを実行
>python excel03.py
###■実行結果
(1)Excelが起動してポップアップウインドウが表示された
OKボタンを押すとブックが閉じるプログラムなので、再度Excelを起動してBookを開く。
実際にPythonでやってみたかったExcelマクロの操作ができている。
**前の記事 **
Pythonを使ったExcelの操作 PythonでExcelの表を編集する
|