Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: henfoni am November 29, 2011, 15:28:21

Titel: Auslesen aller Tabellen aus der access-Struktur
Beitrag von: henfoni am November 29, 2011, 15:28:21
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!
Titel: Re: Auslesen aller Tabellen aus der access-Struktur
Beitrag von: DF6GL am November 29, 2011, 16:00:26
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.
Titel: Re: Auslesen aller Tabellen aus der access-Struktur
Beitrag von: henfoni am November 29, 2011, 16:35:34
klappt! Super danke!