Hier ein Codebeispiel um auf eine DAO-Accessdatenbank zuzugreifen und gezielt bestimmte Datensätze auszulesen.
Diese DB heißt Test und liegt direkt unter C:\
Die Tabelle, aus welcher die Daten kommen, heißt "Namensliste".
Option Explicit
Private Sub CommandButton1_Click()
'###########################################
'Unter Extras - Verweise - Häkchen bei "Microsoft DAO 3.6 Object Library" setzen
'##########################################
'Variablendeklaration
Dim DB As Database
Dim RS As Recordset
Dim lngI As Long
Dim lngAnz As Long
Dim strPfad As String
Dim strSQL As String
strPfad = "C:\Test"
'SQL-String zusammenbasteln
strSQL = "Select * from Namensliste where Namensliste.Name like '" & CStr(TextBox1.Value) & "'"
Set DB = Workspaces(0).OpenDatabase(strPfad)
'Feststellen ob Eintrag in Textfeld. Falls nicht dann Abbruch
If TextBox1.Value = "" Then
MsgBox "Bitte einen Wert eingeben!"
Set DB = Nothing
Exit Sub
End If
'Recordset
Set RS = DB.OpenRecordset(strSQL, dbOpenDynaset)
'Falls der Eintrag nicht gefunden wird Meldung und Abbruch
If RS.BOF And RS.EOF = True Then ' Recordset ist leer
MsgBox "Der Suchbegriff " & TextBox1.Value & " wurde nicht gefunden!"
Set RS = Nothing
Set DB = Nothing
Exit Sub
End If
'Zählen der gefundenen Datensätze und Prüfung, ob mehr als 65536 bzw 65000
'Falls mehr dann Abbruch
RS.MoveLast
lngAnz = RS.RecordCount
RS.MoveFirst
If lngAnz > 65000 Then
MsgBox "Zuviele Datensätze für Excel!" & vbCr & _
"Der Vorgang wird abgebrochen"
Set RS = Nothing
Set DB = Nothing
Exit Sub
Else
'Ausgabe der gefundenen Treffer
MsgBox "Die Abfrage liefert " & lngAnz & " Datensätze"
End If
'Gefundene Daten werden in Excel-Tabelle1-SpalteA+B eingetragen
'Start unter Überschrift
lngI = 2
'Schleife um die Daten aus dem Recordset zu lesen und Übertragung in Zielzellen
Do Until RS.EOF
Worksheets("Tabelle1").Cells(lngI, 1).Value = RS!Name
Worksheets("Tabelle1").Cells(lngI, 2).Value = RS!Ort
RS.MoveNext
lngI = lngI + 1
Loop
RS.Close
DB.Close
Set RS = Nothing
Set DB = Nothing
End Sub