Bestimmte Zeilen aus mehreren Excel-Dateien auslesen
Schritt-für-Schritt-Anleitung
Um bestimmte Zeilen aus mehreren Excel-Dateien auszulesen, kannst Du ein VBA-Makro verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:
- Öffne Excel und drücke
Alt + F11
, um den VBA-Editor zu öffnen.
- Füge ein neues Modul hinzu: Rechtsklicke im Projektfenster und wähle
Einfügen > Modul
.
- Kopiere den folgenden Code in das Modul:
Sub LeseInfo()
Dim sFile$, meArFile()
Dim A&, AA&
Dim meArData()
Dim oExcelFile As Workbook
Dim iCalc%
'Ordner angeben am Ende auf "\" achten
Const strPath$ = "C:\MeinOrdner\"
sFile = Dir(strPath & "*.xls")
'Dateien sammeln
Do While sFile <> ""
Redim Preserve meArFile(A)
meArFile(A) = strPath$ & sFile
A = A + 1
sFile = Dir()
Loop
If A > 0 Then
With Application
iCalc = .Calculation
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
Redim Preserve meArData(1 To 3, 1 To A)
'Dateien durchsuchen
For A = LBound(meArFile) To UBound(meArFile)
Set oExcelFile = Workbooks.Open(meArFile(A), ReadOnly:=True)
With oExcelFile.Worksheets(1)
If .Cells(6, 7) = 1 Then
AA = AA + 1
meArData(1, AA) = .Cells(1, 7) ' G1
meArData(2, AA) = .Cells(6, 7) ' G6
meArData(3, AA) = oExcelFile.Name
End If
oExcelFile.Close SaveChanges:=False
End With
Next A
With Sheets("Tabelle1")
.Range("A12").Resize(.Rows.Count - 12, 3).ClearContents
If AA > 0 Then
.Range("A12").Resize(AA, 3) = Application.Transpose(meArData)
Else
MsgBox "Keine Datei mit 1 in G6 gefunden", vbInformation
End If
End With
.ScreenUpdating = True
.EnableEvents = True
.Calculation = iCalc
End With
Else
MsgBox "Keine Excel-Datei im Ordner", vbInformation
End If
End Sub
- Passe den Pfad an: Ändere
C:\MeinOrdner\
zu dem Ordner, in dem Deine Excel-Dateien gespeichert sind.
- Führe das Makro aus: Gehe zurück zu Excel, drücke
Alt + F8
, wähle LeseInfo
und klicke auf Ausführen
.
Häufige Fehler und Lösungen
-
Fehler: "Index außerhalb des gültigen Bereichs"
Füge vor der Fehlerbehandlung die Zeile Err.Clear
hinzu, um diesen Fehler zu vermeiden.
-
Makro funktioniert nur teilweise
Wenn das Makro nur G6 abfragt, überprüfe den Code auf die Schleife, die J6, M6 usw. abfragt. Stelle sicher, dass die Offset
-Funktion korrekt verwendet wird.
Alternative Methoden
Wenn Du kein VBA verwenden möchtest, kannst Du auch Power Query nutzen, um Daten aus mehreren Dateien zu konsolidieren. Dies ist besonders nützlich, wenn Du keine Programmierkenntnisse hast.
- Gehe zu
Daten > Abrufen und transformieren > Aus Datei > Aus Ordner
.
- Wähle den Ordner aus und lade die Daten.
- Verwende die Power Query-Editor-Funktionen, um die gewünschten Spalten zu filtern und zu transformieren.
Praktische Beispiele
Hier ist ein Beispiel, wie Du den Code anpassen kannst, um auch Informationen aus Zellen wie F1 statt G1 auszulesen:
.Cells(ZeileZ, 1) = wksQuelle.Cells(1, Zelle.Column - 1).Value
Durch diese Änderung wird der Wert aus der Zelle vor der aktuellen Zelle verwendet.
Tipps für Profis
- Verwende
Application.StatusBar
, um den Fortschritt anzuzeigen, wenn Du viele Dateien durchsuchst.
- Optimiere die Performance: Setze
Application.ScreenUpdating
und Application.EnableEvents
auf False
, um die Performance zu erhöhen, während das Makro läuft.
FAQ: Häufige Fragen
1. Wie kann ich das Makro für andere Dateiformate anpassen?
Ändere die Zeile sDatei = Dir(sVerzeichnis & Application.PathSeparator & "*.xl*")
entsprechend, um andere Formate wie .xlsx
oder .xlsm
zu unterstützen.
2. Wo kann ich den Pfad für die Quell-Dateien ändern?
Ändere den Wert von Const strPath$
im Code, um den Pfad zu Deiner Datei anzupassen.
3. Welche Excel-Version wird benötigt?
Das Beispiel wurde unter Excel 2003 erstellt, funktioniert aber auch unter Excel 2007 und späteren Versionen.