Textdateien mit VBA/VBS bearbeiten
Schritt-für-Schritt-Anleitung
Um Textdateien mit VBA oder VBS zu bearbeiten, kannst Du den folgenden Code verwenden. Dieser Code öffnet jede Textdatei in einem angegebenen Verzeichnis, löscht den Vorspann und den Nachspann und speichert nur den Inhalt.
- VBA-Editor öffnen: Drücke
ALT + F11
, um den VBA-Editor in Excel zu öffnen.
- Modul einfügen: Klicke mit der rechten Maustaste auf
VBAProject (DeineDatei.xlsx)
> Einfügen
> Modul
.
-
Code einfügen: Füge den folgenden Code in das Modul ein:
Option Explicit
Const Verzeichnis = "C:\Users\Quarantaene" 'Anpassen
Const strStart As String = "HIER IST DER VORSPANN ZU ENDE"
Const strEnde As String = "HIER BIGINNT DER NACHSPANN"
Public Sub machs()
Dim FSO As Object
Dim DAtei, txtDatei As Object, strTmp As String
Dim arr As Variant
Set FSO = CreateObject("Scripting.FilesystemObject")
For Each DAtei In FSO.getfolder(Verzeichnis).Files
If LCase(FSO.getextensionname(DAtei)) = "txt" Then
Set txtDatei = FSO.opentextfile(DAtei)
strTmp = txtDatei.readall
txtDatei.Close
strTmp = Replace(strTmp, strStart, "#####")
strTmp = Replace(strTmp, strEnde, "#####")
arr = Split(strTmp, "#####")
If UBound(arr) > 0 Then
Set txtDatei = FSO.createtextfile(DAtei, True)
txtDatei.write (arr(1))
txtDatei.Close
End If
End If
Next
End Sub
- Code ausführen: Führe den Code durch Drücken von
F5
aus. Achte darauf, dass Du eine Sicherungskopie Deiner Dateien machst.
Häufige Fehler und Lösungen
-
Fehler: "Keine Textdatei gefunden!"
Lösung: Stelle sicher, dass der angegebene Verzeichnis-Pfad korrekt ist und dass sich dort tatsächlich .txt
-Dateien befinden.
-
Fehler: "Laufzeitfehler 53: Datei nicht gefunden"
Lösung: Überprüfe, ob die Dateien im angegebenen Verzeichnis existieren und dass der Pfad korrekt ist.
Alternative Methoden
Wenn Du nicht mit VBA arbeiten möchtest, kannst Du auch VBScript verwenden. Hier ist ein einfacher VBS-Code, der das gleiche Ziel erreicht:
Dim FSO, folder, file, text, start, finish
Set FSO = CreateObject("Scripting.FileSystemObject")
folder = "C:\Users\Quarantaene"
start = "HIER IST DER VORSPANN ZU ENDE"
finish = "HIER BIGINNT DER NACHSPANN"
For Each file In FSO.GetFolder(folder).Files
If LCase(FSO.GetExtensionName(file)) = "txt" Then
Set txtFile = FSO.OpenTextFile(file, 1)
text = txtFile.ReadAll
txtFile.Close
text = Split(text, start)(1)
text = Split(text, finish)(0)
Set txtFile = FSO.CreateTextFile(file, True)
txtFile.Write text
txtFile.Close
End If
Next
Praktische Beispiele
- Dateien in einem bestimmten Ordner: Stelle sicher, dass alle
.txt
-Dateien in einem spezifischen Ordner vorhanden sind, bevor Du den Code ausführst.
- Anpassung des Codes: Du kannst den Verzeichnis-Pfad und die Suchbegriffe anpassen, um den Code an Deine Bedürfnisse anzupassen.
Tipps für Profis
- Backup erstellen: Bevor Du mit dem Bearbeiten von Textdateien beginnst, erstelle immer ein Backup, um Datenverlust zu vermeiden.
- Testen: Teste den Code zuerst mit einer kleinen Anzahl von Dateien, bevor Du ihn auf alle anwendest.
- Fehlerbehandlung: Füge Fehlerbehandlungsroutinen in Deinen Code ein, um unerwartete Fehler besser zu handhaben.
FAQ: Häufige Fragen
1. Kann ich den Code anpassen, um andere Dateitypen zu bearbeiten?
Ja, Du kannst den Code anpassen, indem Du die Dateiendung von "txt"
auf die gewünschte Endung änderst.
2. Ist VBA in allen Excel-Versionen verfügbar?
Ja, VBA ist in den meisten Excel-Versionen verfügbar, jedoch kann die Unterstützung für bestimmte Funktionen je nach Version variieren.
3. Wie kann ich den Code schneller machen?
Vermeide unnötige FileSystemObject-Operationen und optimiere die Schleifen, um die Ausführungsgeschwindigkeit zu erhöhen.