VBA ACCESS接続と操作

未分類

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

Excel VBA や Access VBA どちらからでも操作可能ですが、ここでは Excel VBAからAccessへ接続して操作する方法 を解説します。


✅ 1. 参照設定を追加(Excel VBAから使う場合)

  1. VBAエディタを開く(Alt + F11)
  2. メニュー「ツール > 参照設定
  3. 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
タイトルとURLをコピーしました