VBAでAccessのデータベースに接続してデータを操作(SELECT/INSERT/UPDATE/DELETE)するには、ADO(ActiveX Data Objects)を使用します。

Excel VBA や Access VBA どちらからでも操作可能ですが、ここでは Excel VBAからAccessへ接続して操作する方法 を解説します。
✅ 1. 参照設定を追加(Excel VBAから使う場合)
- VBAエディタを開く(Alt + F11)
- メニュー「ツール > 参照設定」
- 「Microsoft ActiveX Data Objects 6.1 Library」などにチェック
✅ 2. Accessに接続してSELECTする基本コード
Sub Accessからデータを取得()
Dim conn As Object
Dim rs As Object
Dim sql As String
' 接続先のACCDBファイルのパス
Dim dbPath As String
dbPath = "C:\データ\sample.accdb"
' 接続開始
Set conn = CreateObject("ADODB.Connection")
conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & dbPath & ";"
' SQL実行
sql = "SELECT * FROM 顧客マスタ"
Set rs = conn.Execute(sql)
' Excelのシートに出力(1行目から)
Dim row As Long, col As Long
row = 1
Do Until rs.EOF
For col = 1 To rs.Fields.Count
Cells(row, col).Value = rs.Fields(col - 1).Value
Next col
row = row + 1
rs.MoveNext
Loop
' 終了処理
rs.Close
conn.Close
Set rs = Nothing
Set conn = Nothing
MsgBox "完了しました!"
End Sub
✅ 3. INSERT / UPDATE / DELETE などのSQLも可能
Sub Accessにデータを挿入()
Dim conn As Object
Dim sql As String
Dim dbPath As String
dbPath = "C:\データ\sample.accdb"
Set conn = CreateObject("ADODB.Connection")
conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & dbPath & ";"
sql = "INSERT INTO 顧客マスタ (氏名, 年齢) VALUES ('田中 太郎', 35)"
conn.Execute sql
conn.Close
Set conn = Nothing
MsgBox "INSERT 完了!"
End Sub
✅ 4. パラメータを使いたいとき(安全なSQL実行)
Sub パラメータでINSERT()
Dim conn As Object
Dim cmd As Object
Dim dbPath As String
dbPath = "C:\データ\sample.accdb"
Set conn = CreateObject("ADODB.Connection")
conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & dbPath & ";"
Set cmd = CreateObject("ADODB.Command")
With cmd
.ActiveConnection = conn
.CommandText = "INSERT INTO 顧客マスタ (氏名, 年齢) VALUES (?, ?)"
.Parameters.Append .CreateParameter(, 8, 1, 255, "山田 花子") ' 文字列
.Parameters.Append .CreateParameter(, 3, 1, , 28) ' 数値
.Execute
End With
conn.Close
Set conn = Nothing
Set cmd = Nothing
MsgBox "パラメータ付きでINSERT完了!"
End Sub
✅ 5. 接続文字列のポイント
Accessの種類 | 接続文字列例 |
---|---|
.accdb (新形式) | Provider=Microsoft.ACE.OLEDB.12.0;Data Source=... |
.mdb (旧形式) | Provider=Microsoft.Jet.OLEDB.4.0;Data Source=... |
🔧 ACEドライバが無い場合 → Microsoft Access Database Engine をインストールしてください。
✅ エラー処理(基本)
On Error GoTo ErrHandler
' 処理...
Exit Sub
ErrHandler:
MsgBox "エラー: " & Err.Description