AW: Verbindung Excel zu Access
18.03.2009 09:52:01
Oberschlumpf
Hi Martin
Eine Formel ist mir nicht bekannt, um dein Problem zu lösen.
Aber mit VBA ist es auch kein großer Aufwand, eine Access-DB auszulesen, finde ich.
Wenn ich nix vergessen habe, sieht wie folgt der grundsätzliche Aufbau eines Codes aus, um eine Access-DB auszulesen:
Sub sbListe()
Dim ldbDVD As Database
Dim lrsDVD As Recordset
Dim lrngDVD As Range
Dim lstrAbfrage As String
Dim lloCol As Long, lloRow As Long
'Datenbankconnect
'alles großgeschriebene musst du anpassen
Set ldbDVD = OpenDatabase(ThisWorkbook.Path & "\DB-NAME.MDB")
'erstellt eine SQL-Abfrage, die 6 Datenbankfelder berücksichtigt und nach FELD1 sortiert
'alles großgeschriebene musst du anpassen
lstrAbfrage = "Select FELD1, FELD2, FELD3, FELD4, FELD5, FELD6 from DB-TABELLE order by _
FELD1;"
Set lrsDVD = ldbDVD.OpenRecordset(lstrAbfrage, dbOpenSnapshot)
'Zielbereich
With ThisWorkbook.Sheets(1)
If .Cells(.Rows.Count, 2).End(xlUp).Row >= 11 Then
.Rows("11:" & .Cells(.Rows.Count, 2).End(xlUp).Row).Delete
End If
Set lrngDVD = .Range("B11")
End With
If lrsDVD.EOF = True Then
MsgBox "kein Datensatz gefunden"
Set ldbDVD = Nothing
lrsDVD.Close
ActiveSheet.Range("B1").Select
Exit Sub
End If
lrsDVD.MoveFirst
lloRow = 0
'in der Do/Loop-Schleife werden alle in der Datenbank gefundenen Datensätze
'abgearbeitet
Do While Not lrsDVD.EOF
'in der For/Next-Schleife werden alle im Datensatz vorhandenen
'Datenfeldwerte Excelzellen zugewiesen
For lloCol = 0 To lrsDVD.Fields.Count - 1
lrngDVD.Offset(lloRow, lloCol) = lrsDVD.Fields(lloCol)
Next
lrsDVD.MoveNext
lloRow = lloRow + 1
Loop
lrsDVD.Close
Set ldbDVD = Nothing
End Sub
Wichtig!!
Du musst im VBE den Verweis auf
Microsoft ActiveX Data Objects 2.0 Library
setzen.
(kann sein, dass der Verweis bei dir n bissi anders heißt, da ich noch Excel XP, aber noch nicht Excel 2003 verwende)
Hilfts?
Wenn nicht, dann zeig uns (d)eine Bsp-Access-DB und Bsp-Excel-Datei, in die wir dann vielleicht den Code einbauen können.
Ciao
Thorsten