ExcelVBAでAccessに接続してデータを読み込んでみます。
Accessファイルの内容 #
Accessのファイルは以下のパスに置かれています。
C:\access-read-test\MenuData.accdb
Accessにはテーブル「T_メニュー」があり、T_メニューにはメニューデータが記録されています。

テーブルにはID、メニュー名、値段の3つのフィールドがあります。
フィールド名 | データ型 |
---|---|
ID | オートナンバー型 |
メニュー名 | 短いテキスト |
値段 | 数値型 |
ExcelからAccessのデータを読む #
参照設定 #
ExcelからADOを利用してAccessのデータを読み込むには参照設定を行う必要があります。
参照設定の方法は以下をご覧ください。
VBAで参照設定を行う
·1 分
Programming
VBA
参照設定を起動してMicrosoft ActiveX Data Objects 6.1 Library
にチェックを入れます。

コード #
ExcelからAccessのデータを読み込んでシートに書き込むコードは以下になります。
Option Explicit
Sub readAccessData()
Dim dbPath As String
dbPath = "C:\access-read-test\MenuData.accdb" 'accdbファイルパス
Dim adoCON As New ADODB.Connection
adoCON.ConnectionString = "provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & dbPath & ";"
adoCON.Open
Dim strSQL As String
strSQL = "SELECT * FROM T_メニュー"
Dim adoRS As New ADODB.Recordset
adoRS.Open strSQL, adoCON, adOpenKeyset, adLockReadOnly
Dim writeSht As Worksheet
Set writeSht = ThisWorkbook.Worksheets("Sheet1")
writeSht.UsedRange.Clear
'フィールド名の書き出し
Dim i As Long
For i = 0 To adoRS.Fields.Count - 1
writeSht.Cells(1, i + 1).Value = adoRS.Fields(i).Name
Next i
'CopyFromRecordsetメソッドで基準セルを指定してデータの書き出し
writeSht.Range("A2").CopyFromRecordset adoRS
adoRS.Close
adoCON.Close
Set writeSht = Nothing
Set adoRS = Nothing
Set adoCON = Nothing
End Sub
readAccessData
を実行するとフィールド名とデータをSheet1に書き出します。
