VBA Ordner auswählen und bestimmte Dateien auslesen
Schritt-für-Schritt-Anleitung
Um mit Excel VBA Dateien aus einem Ordner auszulesen und bestimmte Dateien auszuwählen, kannst Du folgenden VBA-Code verwenden. Dieser öffnet einen Dialog zur Ordnerauswahl und listet die relevanten Dateien auf.
- Öffne Excel und drücke
Alt
+ F11
, um den VBA-Editor zu starten.
- Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (DeineDatei)" >
Einfügen
> Modul
.
- Kopiere den folgenden Code in das Modul:
Option Explicit
Sub Dateien_Verzeichnis()
Dim Dlg As FileDialog
Dim Pfad As String
Dim Datei As String
Dim WBM As Workbook
Dim WBC As Workbook
Set Dlg = Application.FileDialog(msoFileDialogFolderPicker)
If Dlg.Show = True Then
Pfad = Dlg.SelectedItems(1) & "\"
Set WBM = ThisWorkbook
' Liste der gesuchten Dateinamen
Dim SuchDateien As Variant
SuchDateien = Array("Tab1.3.xls", "Tab1.4.xls", "Tab1.7.xls", "Tab1.8.xls", "Tab1.9.xls", "Tab1.10.xls")
For Each Datei In SuchDateien
If Dir(Pfad & Datei) <> "" Then
Set WBC = Workbooks.Open(Filename:=Pfad & Datei)
WBC.Sheets(1).Copy After:=WBM.Sheets(WBM.Sheets.Count)
WBM.Sheets(WBM.Sheets.Count).Name = Replace(Datei, ".xls", "")
WBC.Close SaveChanges:=False
End If
Next Datei
End If
End Sub
- Schließe den VBA-Editor und führe das Makro über
Alt
+ F8
aus.
Häufige Fehler und Lösungen
1. Fehler 1004: Keine Zelle gefunden
- Stelle sicher, dass in der Tabelle1 die Namen der Dateien (ohne
.xls
) korrekt eingetragen sind.
2. Leere Zellen in der Liste
- Achte darauf, dass keine Leerzeilen in der Liste der Dateinamen vorhanden sind.
3. Der ausgewählte Ordner enthält keine Dateien
- Überprüfe den Pfad und stelle sicher, dass die gesuchten Dateien vorhanden sind.
Alternative Methoden
Neben dem oben genannten VBA-Skript kannst Du auch den FileSystemObject
verwenden, um Dateien in einem Ordner auszulesen. Hier ist ein Beispiel:
Dim fso As Object
Dim folder As Object
Dim file As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder(Pfad)
For Each file In folder.Files
If file.Name Like "Tab?.xls" Then
' Verarbeite die Datei
End If
Next file
Diese Methode ermöglicht es dir, auch Unterordner zu durchsuchen.
Praktische Beispiele
-
Beispiel 1: Wenn Du nur .xls
-Dateien aus einem spezifischen Ordner kopieren möchtest, kannst Du den Code so anpassen, dass er auf die Dateiendung prüft.
-
Beispiel 2: Um nur bestimmte Blätter aus den gefundenen Dateien zu kopieren, kannst Du die Sheets
-Eigenschaft anpassen.
WBC.Sheets("Tabelle1").Copy After:=WBM.Sheets(WBM.Sheets.Count)
Tipps für Profis
- Verwende
Application.ScreenUpdating = False
, um die Performance beim Ausführen von großen Schleifen zu verbessern.
- Implementiere Fehlerbehandlung mit
On Error Resume Next
und On Error GoTo Fehler
, um unerwartete Fehler zu vermeiden.
- Dokumentiere Deinen Code gut, um die Wartbarkeit zu erhöhen.
FAQ: Häufige Fragen
1. Wie kann ich die Suche auf Unterordner ausweiten?
Du kannst die FileSearchFSO
-Funktion anpassen, um auch Unterordner zu durchsuchen.
2. Ist es möglich, nur bestimmte Daten aus den Dateien zu kopieren?
Ja, Du kannst spezifische Zellen oder Bereiche kopieren, indem Du die entsprechenden Range
-Objekte anpasst.
3. Wo finde ich meine Makros?
Du findest Deine Makros unter Entwicklertools
> Makros
oder durch Drücken von Alt
+ F8
.
4. Kann ich auch andere Dateiformate auslesen?
Ja, passe einfach die Dateiendung im Code an, um andere Formate wie .xlsx
oder .csv
zu verwenden.