Alle Dateien in einem Verzeichnis mit VBA bearbeiten
Schritt-für-Schritt-Anleitung
Um alle .csv-Dateien in einem Verzeichnis mit VBA zu bearbeiten, kannst Du die folgenden Schritte ausführen:
- Öffne Excel und drücke
ALT + F11
, um den VBA-Editor zu öffnen.
- Füge ein neues Modul hinzu: Klicke auf
Einfügen
> Modul
.
- Kopiere den folgenden Code in das Modul:
Sub CSV_aendern()
Dim sDatei As String
Dim sPfad As String
Dim i As Integer, vntCSV, vntTmp
sPfad = "Dein Pfad\" ' Ändere dies zu Deinem Verzeichnis
sDatei = Dir(sPfad & "*.csv")
Do While sDatei <> ""
Open sPfad & sDatei For Input As #1
vntCSV = Split(Input(LOF(1), 1), vbCrLf) ' Ganze CSV in Array
Close #1
For i = 1 To UBound(vntCSV) - 1
vntTmp = Split(vntCSV(i), ";") ' Einzelne Zeile in Array
' Hier kannst Du die Bearbeitung der Zeile vornehmen
vntCSV(i) = Join(vntTmp, ";") ' Zurück in CSV
Next i
' Geänderte Datei in neue Datei schreiben
Open sPfad & Left(sDatei, Len(sDatei) - 4) & Format(Now, "DDMMYYhhmmss") & ".csv" For Output As #1
Print #1, Join(vntCSV, vbCrLf)
Close #1
sDatei = Dir
Loop
End Sub
- Ändere den Pfad in der Zeile
sPfad = "Dein Pfad\"
zu dem Verzeichnis, das Deine .csv-Dateien enthält.
- Starte das Makro: Drücke
F5
, um das Skript auszuführen.
Häufige Fehler und Lösungen
-
Fehler: "Datei nicht gefunden"
- Überprüfe, ob der Pfad korrekt angegeben ist und ob die .csv-Dateien im angegebenen Verzeichnis vorhanden sind.
-
Fehler: "Zugriff verweigert"
- Stelle sicher, dass Du die notwendigen Berechtigungen für das Verzeichnis hast.
-
Fehler: "Das Array ist leer"
- Dies kann passieren, wenn die .csv-Datei leer ist. Füge eine Überprüfung hinzu, um leere Dateien zu ignorieren.
Alternative Methoden
Falls Du keine VBA-Makros verwenden möchtest, kannst Du auch Power Query nutzen, um Daten aus mehreren .csv-Dateien zu importieren und zu bearbeiten.
- Gehe zu
Daten
> Daten abrufen
> Aus Datei
> Aus Ordner
.
- Wähle den Ordner mit den .csv-Dateien aus.
- Bearbeite die Daten im Power Query Editor und lade sie zurück in Excel.
Praktische Beispiele
Wenn Du beispielsweise das Datumsformat in einer .csv-Datei ändern möchtest, kannst Du im VBA-Code die Zeile mit der Bearbeitung so anpassen:
vntTmp(0) = Format(vntTmp(0), "DD.MM.YYYY") ' Ändert das Datum in das gewünschte Format
Hier wird angenommen, dass sich das Datum in der ersten Spalte der CSV befindet.
Tipps für Profis
- Fehlerbehandlung einfügen: Füge
On Error Resume Next
hinzu, um Laufzeitfehler zu ignorieren und das Skript weiter auszuführen.
- Performance verbessern: Verwende
Application.ScreenUpdating = False
, um die Bildschirmaktualisierung während des Makroablaufs zu deaktivieren und die Ausführung zu beschleunigen.
- Makros sicher speichern: Speichere Deine Excel-Datei als
.xlsm
, um die Makros zu behalten.
FAQ: Häufige Fragen
1. Kann ich das Skript auch für andere Dateiformate verwenden?
Ja, Du kannst das Skript anpassen, um auch andere Formate wie .txt zu bearbeiten, indem Du einfach die Dateiendung und den Separator änderst.
2. Welche Excel-Version benötige ich für dieses Makro?
Das Makro funktioniert in Excel 2010 und späteren Versionen, die VBA unterstützen.