全行程をPythonで自動実行したいけど過去に作成したアクセスの中身をPythonで書き直すのは面倒だなと思いませんか?
アクセス自体が重くてメモリーオーバーなどのツール自体の限界が見えているならpythonに置き換えるなどの対策が必要ですが、ただ単にシームレスに自動化したい要望ならアクセスのマクロをPythonから実行するコードを書けばよいです。
PythonからAccessにアクセスしてマクロボタンを実行させるだけなのでコードも簡単ですのでご紹介致します。
Python_Access
PythonからAccessにアクセスするには
pyodbcモジュールのインストール
そのままではPythonからAccessにアクセスできません。
PythonからアクセスするためにはODBCを用いてデータベースに接続する手段をとりpyodbcモジュールをインストールする必要があります。
pip install pyodbc
pipインストールがうまくできない場合は環境による原因が大きいです。考えられる対策の全てを過去記事に記載しておりますのでPythonのpip installが使えない時のプロキシとSSL無視をご覧くださいませ。
データベースエンジンのインストール
データベースエンジンの一覧を下記するため下記コマンドを実行します。
import pyodbc
print(pyodbc.drivers())
出力結果に ‘Microsoft Access Driver (*.mdb, *.accdb)’ が含まれていればAccessのデータベースエンジンがインストール済みです。
ない場合はベットインストールする必要があるので下記の64ビット版をダウンロードしインストールします。
インストールするマイクロソフトの公式ページリンクは下記です。
全コードの概要
まずは全コードの提供です。やっていることはシンプルで対象のアクセスを開いてマクロ名を指定して実行させてアクセスを閉じるだけです。
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()
最後に
他にもOffice関連の自動化をご紹介しておりましてPythonでメール送信・メール受信を自動化やPythonからパワーポイントを操作するなどご興味があればご覧くださいませ。
最後に私がPythonの勉強をして入門者から中級者までにこの本1冊あれば習得できるおすすめ本記事も書いております【本1冊で】Python入門から中級までなれるおすすめ本ご興味がある方は御覧くださいませ。
コメント