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に書き出します。

関連ページ