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

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

コード
ExcelからAccessのデータを読み込んでシートに書き込むコードは以下になります。
1Option Explicit
2
3Sub readAccessData()
4
5 Dim dbPath As String
6 dbPath = "C:\access-read-test\MenuData.accdb" 'accdbファイルパス
7
8 Dim adoCON As New ADODB.Connection
9 adoCON.ConnectionString = "provider=Microsoft.ACE.OLEDB.12.0;" & _
10 "Data Source=" & dbPath & ";"
11
12 adoCON.Open
13
14 Dim strSQL As String
15 strSQL = "SELECT * FROM T_メニュー"
16
17 Dim adoRS As New ADODB.Recordset
18 adoRS.Open strSQL, adoCON, adOpenKeyset, adLockReadOnly
19
20 Dim writeSht As Worksheet
21 Set writeSht = ThisWorkbook.Worksheets("Sheet1")
22 writeSht.UsedRange.Clear
23
24 'フィールド名の書き出し
25 Dim i As Long
26 For i = 0 To adoRS.Fields.Count - 1
27 writeSht.Cells(1, i + 1).Value = adoRS.Fields(i).Name
28 Next i
29
30 'CopyFromRecordsetメソッドで基準セルを指定してデータの書き出し
31 writeSht.Range("A2").CopyFromRecordset adoRS
32
33 adoRS.Close
34 adoCON.Close
35
36 Set writeSht = Nothing
37 Set adoRS = Nothing
38 Set adoCON = Nothing
39
40End Sub
readAccessDataを実行するとフィールド名とデータをSheet1に書き出します。
