以下の手順で、Accessテーブルからワークシートにデータをインポートできます。

Sub ADOImportFromAccessTable(DBFullName As String, _

TableName As String, TargetRange As Range)

' Example: ADOImportFromAccessTable "C:\FolderName\DataBaseName.mdb", _

"TableName", Range("C1")

Dim cn As ADODB.Connection, rs As ADODB.Recordset, intColIndex As Integer

Set TargetRange = TargetRange.Cells(1, 1)

' open the database

Set cn = New ADODB.Connection

cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & _

DBFullName & ";"

Set rs = New ADODB.Recordset

With rs

' open the recordset

.Open TableName, cn, adOpenStatic, adLockOptimistic, adCmdTable

' all records

'.Open "SELECT * FROM " & TableName & _

" WHERE [FieldName] = 'MyCriteria'", cn, , , adCmdText

' filter records

RS2WS rs, TargetRange ' write data from the recordset to the worksheet

'        ' optional approach for Excel 2000 or later (RS2WS is not necessary)

'        For intColIndex = 0 To rs.Fields.Count - 1 ' the field names

'            TargetRange.Offset(0, intColIndex).Value = rs.Fields(intColIndex).Name

'        Next

'        TargetRange.Offset(1, 0).CopyFromRecordset rs ' the recordset data

End With

rs.Close

Set rs = Nothing

cn.Close

Set cn = Nothing

End Sub

マクロの例は、VBAプロジェクトがADOオブジェクトライブラリへの参照を追加したことを前提としています。

これを行うには、VBE内から、[ツール]、[参照]メニューを選択し、[Microsoft ActiveXデータオブジェクトx.xオブジェクトライブラリ]を選択します。

データのインポートまたはエクスポートにADOとDAOのどちらかを選択できる場合は、ADOを使用します。