ADO: Daten aus geschlossener Arbeitsmappe holen
Schritt-für-Schritt-Anleitung
Um Daten aus einer geschlossenen Arbeitsmappe mit ADO in Excel zu holen, befolge diese Schritt-für-Schritt-Anleitung:
-
Öffne den VBA-Editor: Drücke ALT + F11
in Excel, um den VBA-Editor zu öffnen.
-
Neues Modul erstellen: Klicke mit der rechten Maustaste auf „VBAProject (DeineMappe)“ und wähle „Einfügen“ > „Modul“.
-
Code einfügen: Kopiere den folgenden VBA-Code in das Modul:
Sub getData()
Dim objADO As Object
Dim Path As String, Table As String, SourceRange As String
Dim SQL As String, Con As String
Path = "D:\Forum\test.xls" ' Pfad anpassen!
Table = "Tabelle2" ' Tabellenname anpassen
SourceRange = "A1:A100" ' Bereich anpassen!
SQL = "select * from [" & Table & "$" & SourceRange & "]"
If Right(Path, 3) = "xls" Then
Con = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Extended Properties=Excel 8.0;" & _
"Data Source=" & Path & ";"
ElseIf Right(Path, 4) = "xlsx" Or Right(Path, 4) = "xlsm" Then
Con = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Extended Properties=""Excel 12.0;HDR=YES"";" & _
"Data Source=" & Path & ";"
End If
Set objADO = CreateObject("ADODB.Recordset")
objADO.Open SQL, Con, 3, 3
Range("A1").CopyFromRecordset objADO
objADO.Close
Set objADO = Nothing
End Sub
-
Anpassungen vornehmen: Stelle sicher, dass der Pfad zur Datei, der Tabellenname und der Bereich korrekt sind.
-
Makro ausführen: Schließe den VBA-Editor und führe das Makro getData
über ALT + F8
aus.
Häufige Fehler und Lösungen
Alternative Methoden
Falls du ADO nicht verwenden möchtest, gibt es auch andere Möglichkeiten, Daten aus einer geschlossenen Arbeitsmappe zu importieren, beispielsweise:
- Excel-Formeln: Diese Methode ist allerdings nicht gewünscht, da sie auf Formeln basiert.
- Power Query: Eine leistungsstarke Funktion in Excel, um Daten aus verschiedenen Quellen zu importieren, einschließlich geschlossener Arbeitsmappen.
Praktische Beispiele
Hier ist ein Beispiel, wie man ADO in einer realen Situation nutzen kann:
Angenommen, du hast eine Excel-Datei mit Verkaufsdaten in D:\Daten\Verkauf.xlsx
und möchtest den Bereich A1:B10
von Tabelle1
importieren. Der Code würde so aussehen:
Sub ImportSalesData()
Dim objADO As Object
Dim Path As String, Table As String, SourceRange As String
Dim SQL As String, Con As String
Path = "D:\Daten\Verkauf.xlsx"
Table = "Tabelle1"
SourceRange = "A1:B10"
SQL = "select * from [" & Table & "$" & SourceRange & "]"
' Verbindungsinformationen wie oben beschrieben...
Set objADO = CreateObject("ADODB.Recordset")
objADO.Open SQL, Con, 3, 3
Range("A1").CopyFromRecordset objADO
objADO.Close
Set objADO = Nothing
End Sub
Tipps für Profis
- Verbindungspooling nutzen: Um die Leistung bei mehreren Datenabrufen zu verbessern, kannst du die Verbindung zu deiner Datenquelle offen halten.
- Fehlerbehandlung implementieren: Füge Fehlerbehandlungsroutinen hinzu, um unerwartete Fehler abzufangen und zu verwalten.
FAQ: Häufige Fragen
1. Was ist ADO in Excel?
ADO (ActiveX Data Objects) ist eine Technologie, die es ermöglicht, auf Daten aus verschiedenen Quellen zuzugreifen, einschließlich Datenbanken und Excel-Arbeitsmappen.
2. Welche Excel-Versionen unterstützen ADO?
ADO wird in allen modernen Excel-Versionen unterstützt, einschließlich Excel 2010, 2013, 2016 und späteren Versionen.
3. Kann ich ADO auch für andere Dateiformate verwenden?
Ja, ADO kann auch für andere Datenquellen wie SQL-Datenbanken oder Access-Datenbanken verwendet werden, solange der richtige Provider angegeben wird.