AW: Datenübertragung VBA Code
12.09.2005 11:55:43
Manfred
Hallo Caroline,
Der Zugriff auf Datenbanken ist prinzipiell komplex. Ich habe Dir trotzdem einen Code programmiert, der dir helfen sollte. Probier doch mal folgenden Code aus:
Sub DBZugriff()
Dim cn As Connection
Dim rs As Recordset
Dim SQLString As String
Dim xx As Worksheet
Dim i As Integer, j As Integer
Set xx = Worksheets("Tabelle1")
Const DBPfad = "D:\Meinordner\MeineDatenbank.mdb" '<-- Hier dein DBPfad und DBname
'Die datenbank öffnen
Set cn = New ADODB.Connection
With cn
' .Provider = "Microsoft.Jet.OLEDB.3.51" 'für Access 95/97
.Provider = "Microsoft.Jet.OLEDB.4.0" 'für Access 2000 und höher
.ConnectionString = "Data Source=" & DBPfad
.Open
End With
'Definieren was geholt werden soll - hier alles
SQLString = "SELECT MeineDBTab.* FROM MeineDBTab" '<-- Hier deine Datenbanktabelle !!
Set rs = New ADODB.Recordset
rs.Open SQLString, cn, adOpenDynamic, adLockReadOnly
'Die Feldnamen der Datenbanktabelle in die erste Zeile der Exceltabelle "Tabelle1" schreiben
For j = 0 To rs.Fields.Count - 1
xx.Cells(1, j + 1) = rs.Fields.Item(j).Name
Next
'Jetzt alle Sätze holen und in die Exceltabelle schreiben
i = 1
rs.MoveFirst
Do While rs.EOF = False
i = i + 1
For j = 0 To rs.Fields.Count - 1
If IsNull(rs.Fields.Item(j).Value) = False Then
xx.Cells(i, j + 1) = rs.Fields.Item(j).Value
End If
Next
rs.MoveNext
Loop
rs.Close
cn.Close
End Sub
Kopiere diesen Code in die Entwicklungsumgebung von VB, und ändere den DBPfad und den Tabellennamen ( die Tabelle dieser DB, die kopiert werden soll) !!
Ganz wichtig :
In der Entwicklungsumgebung von Excel-VBA mußt Du unter "Extras" - "Verweise" den Haken in Microsoft Active X Data Objects 2.8 Library setzen. Dies ist wichtig, damit die
ADO-Befehle für den Zugriff auf die Datenbank verstanden werden. Sonst läuft das
Programm nicht !!!
Gruß Manfred