スポンサーリンク

AccessとPythonを連携させる方法(pyodbc編)

スポンサーリンク
Access
スポンサーリンク

こんにちは、なかぜんです。
Accessでのデータ処理、便利だけど「もう少し自動化できたら…」と思ったことありませんか?
たとえば、定期的なデータ分析や外部システムとの連携。そんなときに力を発揮するのがPythonです。

今回は、AccessとPythonを連携させて、VBAでは難しい処理をPythonで代替する方法をご紹介します。
特に人気のpyodbcライブラリを使った接続方法や注意点も解説しますので、業務で活用したい方にぴったりです。

スポンサーリンク

AccessとPythonをつなぐ「pyodbc」とは?

pyodbcは、ODBCドライバを使ってAccessやSQL Serverなどのデータベースに接続するためのPythonライブラリです。
Accessに直接接続できるのが特徴で、.accdbファイルに対して読み書きが可能です。

事前に準備するもの

  • Python(3.x 推奨)
  • Microsoft Access Database Engine(64bit or 32bit)
  • pyodbcライブラリ(pip install pyodbcでインストール)
  • 接続対象のAccessファイル(例:C:\data\sample.accdb

Accessに接続してデータを取得する基本コード

それでは、実際にPythonからAccessへ接続し、データを取得するコードを見ていきましょう。


import pyodbc

# データベースファイルのパス
db_path = r'C:\data\sample.accdb'

# ODBC接続文字列
conn_str = (
    r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};'
    rf'DBQ={db_path};'
)

# 接続処理
conn = pyodbc.connect(conn_str)
cursor = conn.cursor()

# データ取得例
cursor.execute('SELECT * FROM 商品マスタ')
rows = cursor.fetchall()

# 結果表示
for row in rows:
    print(row.商品名, row.単価)

cursor.close()
conn.close()

ポイント解説:

  • conn_strの中でDRIVERDBQ(ファイルパス)を指定します
  • AccessのバージョンやPythonのbit数と一致するODBCドライバが必要です
  • fetchall()で結果をリスト形式で取得し、ループで表示しています

Accessから呼び出す場合(VBAからPython実行)

逆に、Access(VBA)からPythonスクリプトを実行することも可能です。以下のようにShell関数でPythonを呼び出します。


Sub RunPythonScript()
    Dim pyScript As String
    pyScript = """C:\Scripts\access_query.py"""
    Shell "python " & pyScript, vbNormalFocus
End Sub

注意:Pythonのパスが環境変数に通っていない場合は、"C:\Path\To\Python.exe"でフルパス指定が必要です。

よくあるミス・注意点

  • ODBCドライバが見つからない:Access Database Engineのインストールを確認(32bitか64bitをPythonと一致させる)
  • ファイルロック:Accessファイルが開きっぱなしだと読み書きに失敗する場合があります
  • 日本語テーブル・フィールド名の扱い:特にカラム名の大文字小文字の違いでエラーになることがあります

業務での応用例

この方法は、以下のような業務に活かせます。

  • Accessで受注管理 → Pythonで集計しグラフ化・Excel自動出力
  • CSVやWeb APIデータをPythonで取得 → Accessに自動インポート
  • Accessで作成したデータをPython経由で機械学習モデルに投入

AccessはUIやトランザクション管理が得意。Pythonは外部連携や計算処理が得意。両者を組み合わせれば、かなりの「業務自動化」が可能になります。

まとめ:連携で可能性は無限に広がる

今回は「AccessとPython(pyodbc)で連携する方法」をご紹介しました。
Accessのデータを外部ツールで活用したいとき、pyodbcはとても便利な手段です。

学べたこと:

  • AccessとPythonを接続するにはODBCドライバとpyodbcが必要
  • VBAからPythonを実行して逆連携も可能
  • 注意点を押さえれば業務でも十分使える

次のステップ:
・Python側でAccessのデータを加工してPower BIやTableauに渡す
・Accessからの自動レポート生成とPythonの連携で、週次集計を完全自動化

Accessの可能性、まだまだ広がりますね!
それではまた、なかぜんでした。