Moin,
ich möchte über VBA-Code alle Tabellen, die ich über ODBC von einem SQL-Server importiert habe, auslesen und von ihnen die Spaltennamen in eine Excel-Datei schreiben. Letzteres klappt auch schon soweit. Ich weiß nur nicht, wie ich über eine Schleife alle importierten Tabellen anspreche. Hier schon mal mein Code soweit:
Sub Spaltennamen_Auslesen()
Dim test As Object, i As Long
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("Tabelle1", dbOpenSnapshot) 'Leer- und Sonderzeichen in Namen vermeiden!
Set test = CreateObject("Excel.Application")
With test
.Visible = True
.Workbooks.Add
For i = 0 To rs.Fields.Count - 1
.Cells(i + 1, 1) = CStr(rs.Fields(i).Name) 'Zelle (1,0) gibt es nicht
Next
.ActiveWorkbook.SaveAs ("C:\TEMP\hallowelt.xls")
.Quit
End With
Set test = Nothing
rs.Close
Set rs = Nothing
End Sub
Tabelle1 soll dann automatisch gezogen werden (und alle weiteren Tabellen auch)
Jemand ne Idee? Danke!
Hallo,
etwa so:
Dim test As Object, tbl As TableDef
On Error GoTo Err_Befehl7_Click
Dim i As Long
Dim rs As DAO.Recordset
For Each tbl In CurrentDb.TableDefs
If Left(tbl.Name, 4) <> "MSYS" Then
Set rs = CurrentDb.OpenRecordset(tbl.Name, dbOpenSnapshot)
Set test = CreateObject("Excel.Application")
With test
.Visible = True
.Workbooks.add
For i = 0 To rs.Fields.Count - 1
.Cells(1, i + 1) = CStr(rs.Fields(i).Name)
Next
.ActiveWorkbook.SaveAs ("D:\" & tbl.Name & ".xls")
.Quit
End With
Set test = Nothing
End If
Next
statt der TableDefs-Auflistung könnte auch ein Recordset mit Datenherkunft auf die Systemtabelle "MsysObjects" benutzt und durchlaufen werden.
klappt! Super danke!