プログラミング

PythonでExcel VBAマクロを実行する方法

PythonでExcel VBAマクロを実行する目的

日常や仕事の中でExcelでデータを集計する場面は多いと思います。また、Excelについているマクロを用いて集計したデータを加工したりといったことも多いのではないでしょうか。単発の作業であれば毎回マクロをその都度実行すればいいですが、繰り返しの作業となってくると時間も手間もかかるものです。
今回は、Pythonを使って指定のExcel内のマクロを実行するコードを最低限の行を使って紹介したいと思います。

例えばこんな方にお薦め

  • 最近Pythonを使い始めて、どんなことができるか試してみたい
  • VBAで自働化されたエクセルワークブックは持っているが、いちいちワークブックを開いて実行するのが手間と感じている
  • エクセルワークブックのVBAでのデータ処理を行い、その結果をPython-pptxなどで資料化するまでをPythonで一度に実行したい
  • PythonやVBAを使えない人とデータを共有している

前準備として、win32ライブラリのインストールを済ませておきます。

pywin32公式GitHUB

使用するソースコード

以下の公開リポジトリに置いています。

https://github.com/sunset-create/Excel_run

コードの解説

解説には下記のコードを使います。

import win32com.client
import os

cd = os.getcwd()
excel = win32com.client.Dispatch("Excel.Application")
wb = excel.Workbooks.Open(cd + '/test.xlsm')
excel.visible = True
excel.Application.Run("Module1.test")

上記のコードを記述した.pyファイルと動作させたいマクロを持ったExcelファイルを同じフォルダに置きます。ここでは、test.xlsm を使用します。test.xlsmには"Hello World!"と表示されるマクロ"test"が記述してあります。

ファイルの置き方
ファイルの置き方の説明

マクロ"Module1.test"を実行します。

プログラムを実行すると、test.xlsmが開き"Hello World!"と表示されます。

Hello World!が表示されます
Hello World!が表示されます

コードの解説をしていきます。

import win32com.client

win32comモジュールをインポートします。Excelを操作するのに使用します。

import os

osモジュールをインポートします。現在のディレクトリを取得するのに使用します。

cd = os.getcwd()

cd変数に現在のディレクトリを格納します。

excel = win32com.client.Dispatch("Excel.Application")

win32comモジュールでExcelを起動します。

wb = excel.Workbooks.Open(cd + '/test.xlsm')

Excelワークブックを開きます。ここでは、test.xlsm を開いています。

excel.visible = True

マクロが動作していることを確認するためにExcelを可視化します。不要な場合は、TrueをFalseに変えればバックグラウンドで作業してくれるようになります。

excel.Application.Run("Module1.test")

 

今回は、Pythonを使ってExcelのマクロを動かしてみました。マクロを使った繰り返し作業を自動化するなどに使えると思います。

-プログラミング
-, , , , , ,

© 2024 jitanブログ Powered by AFFINGER5