Sub GetSheetNames()
Dim cn As ADODB.Connection ' Hier hält das Programm an. Fehlermeldung s.
oben.
Dim cat As ADOX.Catalog
Dim t As ADOX.Table
Set cn = New ADODB.Connection
cn.Open "Provider=MSDASQL.1;Data Source=Excel Files;" _
& "Initial Catalog=X:\1_Business_Blueprint\AP1_Material\KTR 010
Materialstamm\CE_010_neu.xls" 'change path name here
Set cat = New ADOX.Catalog
Set cat.ActiveConnection = cn
For Each t In cat.Tables
Debug.Print t.Name
Next t
Set cat = Nothing
cn.Close
Set cn = Nothing
End Sub
--
Best regards
CK
hallo CK,
dir fehlt ein Verweis. Im VBA-Editor auf Extras/Verweise, dort einen
Haken setzen bei Microsoft ActiveX Data Objects x.x Library.
Meist sind da mehrere Versionen (x.x sind dann verschiedene Zahlen).
Du kannst die höchste nehmen, es sei denn, du willst die Excel-Datei
an jemanden weitergeben. Der hat evtl diese Version nicht und du musst
eine niedrige nehmen.
Gruß
stefan
bei beiden markierst du das Kästchen davor, dadurch werden sie
aktiviert
Ok, VBA-Editor beenden.
Gruß
stefan
Laufzeitfehler '-2147467259 (800004005):
[Microsoft][ODBC Driver Manager] Der Datenquellenname wurde nicht gefunden,
und es wurde kein standardtreiber angegeben.
Hast Du eine Idee?
Ziel: Ich will aus einer geschlossenen Excel Datei alle Tabellenname auslesen.
Gruß
--
Best regards
CK
Sub GetSheetNames()
Dim cn As ADODB.Connection
Dim cat As ADOX.Catalog
Dim t As ADOX.Table
Datei = "C:\test\mappe1.xls"
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Datei & _
";Extended Properties=Excel 8.0;"
Set cat = New ADOX.Catalog
Set cat.ActiveConnection = cn
For Each t In cat.Tables
MsgBox Replace(t.Name, "$", "")
Next t
Set cat = Nothing
cn.Close
Set cn = Nothing
End Sub
Bei mir taucht am Ende der Tabellennamen jeweils ein $ auf, das kann
man mit Replace ersetzen.
Übrigens wird die Datei auch mit ADO durchaus geöffnet, denn man kann
auf die Datei, aus der die Tabellennamen ausgelesen werden, während
der Abfrage nicht zugreifen (zumindest bei obigem Code nicht, es gibt
für den Open-Befehl weitere Parameter, wie die Datei zu öffnen ist. Da
kenne ich mich aber weniger gut aus...)
Gruß
stefan
Wo und wie lernt man eigentlich solche Sachen? Gibt es spezielle Bücher oder
Kurse darüf?
Gruß
--
Best regards
CK
For Each t In cat.Tables
If Not InStr(t.Name, "Druckbereich") > 0 Then
MsgBox Replace(t.Name, "$", "")
End If
Next t
Es gibt für solche Sachen Bücher und Kurse, ich hatte 'VBA lernen
leicht gemacht' oder so ganz am Anfang. Den Rest habe ich mir durch
regelmäßige Beteiligung an dieser NG beigebracht.
Gruß
stefan