Mahlzeit Sven,
ich mach mal den Anfang:
Die ADODB.Connection() braucht es eigentlich nicht.
Im Prinzip reicht Dir folgendes:
Sub viaADODBRecordset()
Dim v() As Variant
With CreateObject("ADODB.Recordset")
.Open "SELECT [Spalte1], [Spalte2], [Spalte3] FROM `Tabelle1$`", "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0 Xml"""
'*** data handling
v = Application.Transpose(.GetRows)
.Close
End With
End Sub
Das Select-Statement kannst Du nach belieben abändern. Selbst eine Where-Clause wäre möglich.
Die ThisWorkbook.FullName-Eigenschaft kannst Du durch einen konformen String ersetzen. (konform=Pfad inkl Dateiname+ gültige Dateiendung)
Alles also kein grosses Hexenwerk und nachvollziehbar.
Aber Achtung:
Ich verwende hier zwar .GetRows in Kombination mit Application.Transpose.
Weiss aber, da sind wir begrenzt im handling mit der Datensatzmenge bzw Feldanzahl und dem handling von NULL-Werten.
Alternativ:
Du könntest loopen (.Fileds.Count/.RecordCount als Begrenzer) oder auch die CopyFromRecordset-Methode eines Range-Objektes die Daten zügig abgreifen.
Mehr zu sagen wird schwer da der Tabellenaufbau von Quellmappe/Ziemappe von Bedeutung sein können.
Vielleicht helfen Dir die Infos ja bereits ein bisschen weiter und Du kommst weiter klar damit.
|