Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Hilfe:Sonderzeichen ersetzen in vielen Textdateien

Forumthread: Hilfe:Sonderzeichen ersetzen in vielen Textdateien

Hilfe:Sonderzeichen ersetzen in vielen Textdateien
Mandy
Holle,
ich brauche dringend Eure Hilfe. Habe mir durch einen dummen Fehler ca. 500 Textdateien durch verzippen, konvertieren, ..... abspeichern so verbogen, dass alle Umlaute (Ä, ä; Ü,ü, Ö, ö, ß)
durch irgend welche Sonderzeichen ersetzte wurden:
Ü = Ü
ü = ü
ö = ö
ä = ä
ß = ß
Ich müsste nun alle Dateien öffnen und Suchen / ersetzen ausführen.
Tino und Ransi haben mir vor ein paar Tagen ein coolen Code geschrieben, mit denen ich diese besagten Textfiles alle auf einmal durchrattern konnte und in allen Files text herausschneiden konnte.
das ging blitzschnell.
Gibt es eine Möglichkeit , dass ein Makro alle Textdateien in einem Verzeichnis öffnet und dort alle Sonderzeichen durch die richtigen Umlaute ersetzt (siehe Tabelle oben)
Hoffe, mir kann jemand Helfen, Danke
Mandy
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Hilfe:Sonderzeichen ersetzen in vielen Textdateien
22.08.2011 10:24:42
Tino
Hallo,
kannst mal testen.
Wie immer zuerst eine Sicherung Deiner Textdateien anlegen,
sollte etwas schief gehen kannst Du diese wiederherstellen!
Option Explicit

Sub Beispiel()
Dim strPath$, strDir$, sLines$, UmbruchZeichen$
Dim ArrayFile(), ArrUmlaute
Dim n&, nn&
Dim F%

'Auslistung Zeichen Reihenfolge beachten 
'Suchzeichen, ersetze durch, Suchzeichen, ersetze durch usw... 
ArrUmlaute = Array("Ü", "Ü", "ü", "ü", "ö", "ö", "ä", "ä", "ß", "ß")

'evtl. Pfad anpassen wo sich die Textdateien befinden 
'hier sind diese auch diese Excel-Datei liegt 
strPath = ThisWorkbook.Path

If Right$(strPath, 1) <> "\" Then strPath = strPath & "\"

'*.txt- Dateien im Ordner suchen u. sammeln 
strDir = Dir$(strPath & "*.txt", vbNormal)
Do While strDir <> ""
    Redim Preserve ArrayFile(n)
    ArrayFile(n) = strPath & strDir
    n = n + 1
    strDir = Dir$()
Loop

If n > 0 Then
    UmbruchZeichen$ = Chr(8) & Chr(9) & Chr(10) & Chr(13)
    
    For n = Lbound(ArrayFile) To Ubound(ArrayFile)
       'Datei einlesen 
        F = FreeFile
        Open ArrayFile(n) For Binary As #F
        sLines = Space$(LOF(F))
        Get #F, , sLines
        Close
        
        'Ersetze Zeichen im String 
        For nn = Lbound(ArrUmlaute) To Ubound(ArrUmlaute) Step 2
            sLines = Replace(sLines, ArrUmlaute(nn), ArrUmlaute(nn + 1))
        Next nn
            
        'nicht benötigte Umbruchzeichen am Ende löschen 
        Do While InStr(UmbruchZeichen, Right$(sLines, 1)) > 0
            sLines = Left$(sLines, Len(sLines) - 1)
        Loop
            
        'String zurückschreiben 
        Open ArrayFile(n) For Output As #F
        Print #F, sLines
        Close #F
    Next n
End If

End Sub
Gruß Tino
Anzeige
Danke Tino, perfekt, wie immer :-) owT
Mandy
Anzeige
Anzeige

Infobox / Tutorial

Sonderzeichen in Excel ersetzen: Schritt-für-Schritt-Anleitung


Schritt-für-Schritt-Anleitung

Um in Excel Sonderzeichen zu ersetzen, insbesondere wenn Du mit Textdateien arbeitest, kannst Du ein Makro verwenden. Hier ist eine einfache Anleitung, um die unerwünschten Zeichen durch die korrekten Umlaute zu ersetzen:

  1. Sicherung deiner Dateien: Bevor Du beginnst, erstelle unbedingt eine Sicherungskopie der Textdateien, die Du bearbeiten möchtest.

  2. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Neues Modul einfügen: Klicke im Menü auf Einfügen und wähle Modul.

  4. Code einfügen: Kopiere den folgenden VBA-Code in das Modul:

    Option Explicit
    
    Sub SonderzeichenErsetzen()
       Dim strPath As String, strDir As String, sLines As String
       Dim ArrayFile() As String, ArrUmlaute
       Dim n As Long, F As Long
    
       ArrUmlaute = Array("Ü", "Ü", "ü", "ü", "ö", "ö", "ä", "ä", "ß", "ß")
    
       strPath = ThisWorkbook.Path
    
       If Right$(strPath, 1) <> "\" Then strPath = strPath & "\"
       strDir = Dir$(strPath & "*.txt", vbNormal)
    
       Do While strDir <> ""
           ReDim Preserve ArrayFile(n)
           ArrayFile(n) = strPath & strDir
           n = n + 1
           strDir = Dir$()
       Loop
    
       If n > 0 Then
           For n = LBound(ArrayFile) To UBound(ArrayFile)
               F = FreeFile
               Open ArrayFile(n) For Binary As #F
               sLines = Space$(LOF(F))
               Get #F, , sLines
               Close
    
               For nn = LBound(ArrUmlaute) To UBound(ArrUmlaute) Step 2
                   sLines = Replace(sLines, ArrUmlaute(nn), ArrUmlaute(nn + 1))
               Next nn
    
               Open ArrayFile(n) For Output As #F
               Print #F, sLines
               Close #F
           Next n
       End If
    End Sub
  5. Makro ausführen: Schließe den VBA-Editor und gehe zurück zu Excel. Drücke ALT + F8, wähle SonderzeichenErsetzen aus und klicke auf Ausführen.

Dieser Code durchsucht alle .txt-Dateien im Verzeichnis der Excel-Datei und ersetzt die angegebenen Sonderzeichen durch die korrekten Umlaute.


Häufige Fehler und Lösungen

  • Fehler: "Datei nicht gefunden"

    • Lösung: Stelle sicher, dass sich die Textdateien im gleichen Verzeichnis wie die Excel-Datei befinden.
  • Fehler: Umlaute werden nicht ersetzt

    • Lösung: Überprüfe, ob die Zeichen in der ArrUmlaute-Liste korrekt sind. Möglicherweise sind die Zeichen anders codiert.

Alternative Methoden

Falls Du kein Makro verwenden möchtest, kannst Du auch die Suchen und Ersetzen-Funktion in Excel nutzen:

  1. Öffne die Textdatei in Excel.
  2. Drücke CTRL + H für die Ersetzen-Funktion.
  3. Gebe das unerwünschte Zeichen im Feld "Suchen nach" und das gewünschte Zeichen im Feld "Ersetzen durch" ein.
  4. Klicke auf "Alle ersetzen".

Diese Methode ist allerdings weniger effizient, wenn Du viele Dateien hast.


Praktische Beispiele

  • Beispiel 1: Du hast eine Datei mit dem Inhalt Das ist überraschend!. Nach dem Ausführen des Makros wird der Text zu Das ist überraschend! geändert.

  • Beispiel 2: Eine Textdatei enthält eine Liste von Städten, in der München als München geschrieben ist. Das Makro ersetzt dies korrekt.


Tipps für Profis

  • Verwende die VBA-Fehlerbehandlung, um sicherzustellen, dass dein Makro auch bei unerwarteten Eingaben stabil bleibt.
  • Experimentiere mit der Schnellformatierung, um den Ersetzungsprozess zu optimieren.
  • Wenn Du mit großen Datenmengen arbeitest, kannst Du die Laufzeit deines Makros durch die Deaktivierung von Bildschirmaktualisierungen optimieren:

    Application.ScreenUpdating = False
    ' Dein Code hier
    Application.ScreenUpdating = True

FAQ: Häufige Fragen

1. Wie kann ich das Makro anpassen, um weitere Sonderzeichen zu ersetzen? Du kannst einfach weitere Paare in das ArrUmlaute-Array einfügen.

2. Welches Excel-Version benötige ich für dieses Makro? Das Makro funktioniert in Excel 2010 und höheren Versionen.

3. Was mache ich, wenn das Makro nicht funktioniert? Überprüfe den Code auf Tippfehler und stelle sicher, dass Du die richtigen Berechtigungen hast, um die Dateien zu ändern.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige