PythonでExcel操作~~といったところは近年よく話題になり、Excel業務をPythonで自動化・効率化というトレンドがあったりなかったりします。そのようなトレンドになるほどPythonにはExcel操作のライブラリが多数存在し、PythonとExcelの親和性が高いのも事実です。
PythonのExcel操作系ライブラリのほとんどでは、マクロを実行するメソッドが用意されています。今回はxlwingsというライブラリを使ってExcelマクロを実行する手順を紹介します。
Excelマクロ
Pythonで呼び出すExcelマクロを確認しておきます。今回は簡単なマクロを用意しました。Sample.xlsmに1~12月までの合計を算出するマクロを作成しました。
PythonからAggregate()を呼び出します。
Sub Aggregate()
Dim 合計 As Integer
For i = 1 To 12
合計 = 合計 + Cells(2, i).Value
Next
Cells(2, 13) = 合計
End Sub
xlwingsのインストール
xlwingsをインストールしていない方はまずインストールしましょう。pip、condaの両方からインストール可能です。
pip install xlwings
conda install xlwings
PythonからExcelマクロを実行する
Pythonから先ほどのマクロを実行します。まずはソースコード全体を紹介します。
import xlwings as xw
excel = xw.App(visible=False)
wb = excel.books.open('C:/Project/マクロ/Sample.xlsm')
macro= wb.macro('Aggregate')
macro()
wb.save()
wb.close()
excel.quit()
まずはxlwingsをxwとしてインポートします。
xw.App()でExcelインスタンスを作成します。visible=Falseとすることで、実行時にバックグラウンドでExcelが開かれるため、画面上では処理が見えなくなります。
excel.books.open()で引数に指定したExcelファイルを開きます。
wb.macro()では実行するマクロを指定しています。
macro()でマクロを実行します。これを忘れるとマクロを実行できないので注意です。もし実行するマクロに引数を指定する必要がある場合は、ここで引数を渡します。
以降はExcelファイルを保存してブックを閉じているだけです。開いたファイル、作成したインスタンスの後始末は忘れずにしておきましょう。
さて、このプログラムを実行した後のExcelファイルを見てみます。M列の合計に値が入りました。
まとめ
PythonからExcelマクロを実行する方法を紹介しました。Excel業務をPythonで自動化というのはトレンドではありますが、Pythonプログラムを作成しなければならない点がネックになります。
既にマクロを作成しているのであれば、Python化への第一歩としてPythonからマクロ呼び出しという方法もあると思います。もちろんマクロを呼び出すだけではPython化の意味がないので、他の処理との連携が前提ですけどね。
少しずつPythonでのExcel操作を身につけていきましょう^^
ではでは👋