【よく分かる】xlwings でExcelマクロを実行しよう by Python

当ページのリンクには広告が含まれています。

xlwingsを使えば、PytonからExcelブックを編集することが可能ですが、文字色や背景色、罫線などの属性をプログラムから設定するのは面倒です。

対策としては、Excel側でレイアウトを作成し、それをテンプレートとしてPythonからデータを流し込むという方法がよく使われます。

まれにですが、データを流し込む前後にExcelのマクロを実行したいことが発生します。

例えば、マクロが含まれているExcelブックがあって、そのマクロを流用したいとか、xlwings では記述が複雑なため、マクロ側で処理した方が都合が良いといった場合です。

ということで、今回は xlwings でマクロを実行する方法について解説します。

目次

Excelマクロを呼び出す手順

サンプルプログラム

シート上のグラフを jpg 出力するマクロを、Pythonから呼び出す場合を例に具体的なコードを紹介していきます。

Excelマクロは、 "SaveChart" という名前が付けられており、マクロへの引数としてイメージ保存用のフォルダを渡す仕様になっています。

Python側のソースコード

Python側は次のようになります。

xw.app(visible=False) と記述することで、Excelアプリケーションを非表示にして起動しています。

また、マクロを呼び出す際の引数に "d:\\" と記述していますが、これは マクロ側(VBA側)が¥文字を特殊文字として扱う仕様であるため、エスケープする必要があるからです。

マクロにファイル名、フォルダ、パス等を渡す場合は、この点にご注意ください。

Excel側のコード

Pythonから呼び出されるマクロは以下の通りです。

引数で渡されたフォルダに対して、グラフのタイトルと拡張子(jpg) を付加してパスを作成し、ファイル出力(Export)するようになっています。

このマクロが搭載されているシートは次の様になっています。

下記はExcel上でマクロを開いた状態の画像です。

標準モジュール(Module 1)にマクロを記述しています。

Excelマクロを作るための設定方法について

マクロを編集する場合、メニューに「開発」タブが表示されていないと編集できません。

Excel側で設定を行う必要がありますので、その手順を紹介しておきます。

図に従って、①~⑤をクリックしてください。

以上の操作で「開発」タブがメニューに表示されます。

⑥~⑨の順番で操作してもらえれば、マクロ編集のウィンドウが表示されます。

まとめ

今回は xlwings を使って、PythonからExcelマクロを呼び出す方法について説明しました。

PythonからExcelマクロを呼び出す際、任意の数だけ引数を指定できますので、汎用的な処理が実現可能です。

注意点としては、引数に’¥’が含まれていると、Excelマクロ側が特殊文字として処理してしまうため、Python側でエスケープが必要になることぐらいです。

既にExcel側にマクロがあって、それを流用したいという場合には非常に便利なので、是非ご活用下さい。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次