Excel VBAからADO(ActiveX Data Objects)を使用して、Microsoft Accessのデータベースに接続するには

Excel VBAからADO(ActiveX Data Objects)を使用して、Microsoft Accessのデータベースに接続するには、以下の手順で実装できます。


目次

✅ 事前準備

  1. 参照設定を追加
    • Excel VBAエディタで Alt + F11 を押してVBAエディタを開きます。
    • メニューの「ツール」→「参照設定」で「Microsoft ActiveX Data Objects x.x Library」にチェックを入れます(通常は「6.1」または「2.8」など)。

📌 VBAコード例(ACCDB形式のAccess)

Sub ConnectToAccessDB()
    Dim conn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim dbPath As String
    Dim sql As String

    ' Accessファイルのパス
    dbPath = "C:\YourPath\YourDatabase.accdb"

    ' 接続の初期化
    Set conn = New ADODB.Connection
    conn.ConnectionString = _
        "Provider=Microsoft.ACE.OLEDB.12.0;" & _
        "Data Source=" & dbPath & ";" & _
        "Persist Security Info=False;"

    ' 接続を開く
    conn.Open

    ' SQL文(例:テーブルからすべてのレコードを取得)
    sql = "SELECT * FROM YourTableName"

    Set rs = New ADODB.Recordset
    rs.Open sql, conn, adOpenStatic, adLockReadOnly

    ' データの表示例:イミディエイトに1行目のフィールド名と値を出力
    If Not rs.EOF Then
        Debug.Print rs.Fields(0).Name & ": " & rs.Fields(0).Value
    End If

    ' 終了処理
    rs.Close
    conn.Close
    Set rs = Nothing
    Set conn = Nothing

    MsgBox "接続完了"
End Sub

🔄 MDB形式(古いAccessファイル)の接続文字列

conn.ConnectionString = _
    "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    "Data Source=" & dbPath & ";" & _
    "Persist Security Info=False;"

🛠 よくある注意点

  • 「Microsoft.ACE.OLEDB.12.0」が見つからない場合
     → Officeが64bit/32bitの違いでドライバがない可能性あり。下記リンクからAccess Database Engineをインストール。
     Microsoft Access Database Engine 2010 Redistributable
  • SQLのテーブル名やカラム名に注意
     スペースや日本語を使っている場合は [...] で囲む必要があります。

よかったらシェアしてね!
目次