Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Alle Dateien in einem Verzeichnis bearbeiten

Forumthread: Alle Dateien in einem Verzeichnis bearbeiten

Alle Dateien in einem Verzeichnis bearbeiten
Alexander
Hallo zusammen,
ich möchte gerne mittels VBA ein Programm schreiben, dass alle .csv Dateien nacheinander im übergebenen Verzeichnis bearbeitet (Zeile für Zeile z.B. Datumsformat ändern). Was mir fehlt ist
1. alle Dateien verarbeiten bis alle verarbeitet sind
2. öffnen und zeilenweise einlesen der .csv Dateien, nach Bearbeitung schließen
Die Bearbeitung der einzelnen Datensätze (Zeilen) ist nicht das Problem.
Könnt ihr mir helfen?
Viele liebe Grüße
Alexander
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Alle Dateien in einem Verzeichnis bearbeiten
05.06.2012 13:55:26
marcl
Hallo Alexander,
Sub tst()
Dim datei As String
Dim pfad As String
pfad = "Dein Pfad\"
datei = Dir(pfad)
Do While datei  ""
Workbooks.Open Filename:=pfad & datei
Loop
End Sub

Gruß
marcl
AW: Alle Dateien in einem Verzeichnis bearbeiten
06.06.2012 08:36:51
Alexander
Hallo und danke für die Hilfe.
Wie man die Dateien auflistet, weiß ich jetzt. Ich will allerdings die Dateien nicht als Workbook öffnen, sondern ich müsste jede Zeile der Datei in eine Variable einlesen, verarbeiten, also Datum ändern usw. und danach in eine neue csv-Datei schreiben, ebenfalls zeilenweise. Idealerweise sollte keine der Dateien währenddessen auf dem Bildschirm erscheinen.
Kann mir da noch jemand weiterhelfen?
Anzeige
AW: Alle Dateien in einem Verzeichnis bearbeiten
06.06.2012 12:53:33
Rudi
Hallo,
sowas?
Sub CSV_aendern()
Dim sDatei As String
Dim sPfad As String
Dim i As Integer, vntCSV, vntTmp
sPfad = "n:\test\Dein Pfad\"
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
'mach was mit vntTmp oder auch nicht
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

Gruß
Rudi
Anzeige
;
Anzeige

Infobox / Tutorial

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:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu: Klicke auf Einfügen > Modul.
  3. 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
  1. Ändere den Pfad in der Zeile sPfad = "Dein Pfad\" zu dem Verzeichnis, das Deine .csv-Dateien enthält.
  2. 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.

  1. Gehe zu Daten > Daten abrufen > Aus Datei > Aus Ordner.
  2. Wähle den Ordner mit den .csv-Dateien aus.
  3. 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.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige