Con la procedura seguente è possibile importare dati da una tabella di Access a un foglio di lavoro.

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

Gli esempi di macro presuppongono che il progetto VBA abbia aggiunto un riferimento alla libreria di oggetti ADO.

Puoi farlo dall’interno del VBE selezionando il menu Strumenti, Riferimenti e selezionando Microsoft ActiveX Data Objects x.x Object Library.

Usa ADO se puoi scegliere tra ADO e DAO per l’importazione o l’esportazione dei dati.