ExcelやAccessのマクロ機能を実行し、処理を自動化するケースがあります。ただ、毎回誰かが手動でボタンを押すのはスマートではありません。人がいなくても自動的に処理を回せるようにしていくことが人手不足の今求められています。
よくある方法でタスクスケジューラーなどで時間を決めてbat処理する方法がありますが「①処理中に実行してしまう②処理開始するまでの時間がもったいない」などの問題点があります。工夫すれば①②の対策はできますが、Python経由で一気通貫で自動処理する方が楽です。
そこで今回は、PythonからAccessのマクロ機能を実行するコードをご紹介いたします。
PythonからAccess(アクセス)を操作する方法
pyodbcモジュールをインストール
Pythonからアクセスを操作するためにはODBCを用いてデータベースに接続する手段をとりpyodbcモジュールをインストールする必要があります。
pip install pyodbc
pipインストールがうまくできない場合は環境による原因が大きいです。考えられる対策の全てを過去記事に記載しておりますのでPythonでpip installが使えない時のプロキシとSSL無視をご覧くださいませ。
データベースエンジンのインストール
データベースエンジンの一覧を下記するため下記コマンドを実行します。
import pyodbc
print(pyodbc.drivers())
出力結果に ‘Microsoft Access Driver (*.mdb, *.accdb)’ が含まれていればAccessのデータベースエンジンがインストール済みです。ない場合はベットインストールする必要があるので下記の64ビット版をダウンロードしインストールします。
PythonからAccessを操作するサンプルコード
まずは全コードの提供です。やっていることはシンプルで対象のアクセスを開いてマクロ名を指定して実行させてアクセスを閉じるだけです。
import win32com.client
from win32com.client import Dispatch
#実行させたいAccessのpathを指定
input_access_path = "マクロを実行させたいアクセスのpathを指定"
objAccess.Dispatch("Access.Application")
objAccess.OpenCurrentDatabase(input_access_path)
objAccess.Visible = True
objAccess.UserControl = True
objAccess.DoCmd.RunMacro("マクロ名を入力")
objAccess.Quit()
これだけのコードでaccessにアクセスすることなくシームレスにPythonで自動化を実現できます。PythonからWindowsAPIへのアクセスを提供してくれます。
import win32com.client
指定のaccessを立ち上げるまでの操作部分は下記。
input_access_path = "マクロを実行させたいアクセスのpathを指定"
objAccess.Dispatch("Access.Application")
objAccess.OpenCurrentDatabase(input_access_path)
objAccess.Visible = True
objAccess.UserControl = True
マクロの実行部分と最後にアクセスを閉じて終わります。
objAccess.DoCmd.RunMacro("マクロ名を入力")
objAccess.Quit()
ご質問やご依頼について
記事やDX化のご質問や依頼はServiceをご覧くださいませ。