16568
21.09.2006, aktualisiert am 03.05.2009
52322
8
0
Sonderzeichen in Excel per Makro entfernen
Immer wieder werden nach einem Import div. Zeichen falsch angezeigt, oder es sind unerwünschte Zeichen hinzugekommen...
Hiermit kann man genau spezifizieren, welche wieder entfernt werden sollen.
Nachdem immer wieder mal Probleme mit Sonderzeichen in Tabellen auftreten, die man auch mit der "Ersetzen"-Funktion in Excel nicht so einfach los wird, hier ein kleines Tutorial.
Zuerst fügen wir in die aktuelle Excel-Arbeitsmappe ein Modul ein:
Dann Rechtsklick auf
Jetzt folgenden Text in die angezeigte leere Fläche kopieren:
Die wichtigsten Stellen sind kommentiert.
Jetzt nur noch einen Bereich markieren, der bereinigt werden soll, und dann
Dann das Makro Zeichenloeschung auswählen...
Bei Fragen oder Anregungen, her damit
Lonesome Walker
Hiermit kann man genau spezifizieren, welche wieder entfernt werden sollen.
Nachdem immer wieder mal Probleme mit Sonderzeichen in Tabellen auftreten, die man auch mit der "Ersetzen"-Funktion in Excel nicht so einfach los wird, hier ein kleines Tutorial.
Zuerst fügen wir in die aktuelle Excel-Arbeitsmappe ein Modul ein:
Extras -> Makro -> Visual-Basic-Editor
oder
Alt+F11
Dann Rechtsklick auf
VBAProject(Arbeitsmappenname.xls) -> Einfügen -> Modul
Jetzt folgenden Text in die angezeigte leere Fläche kopieren:
Public Sub Zeichenloeschung()
Dim i As Long
Dim Start As String
Dim Ende As String
Dim Temp As String
Dim erlaubt As String
Start = Time ' <- hier wird eine Zeitmessung eingeleitet
erlaubt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!§$%&/()=?*#ß\ÄÖÜ@,-_:.+;<> " ' <- hier werden die Zeichen definiert, die erlaubt sind;
' Groß-/Kleinschreibung wird ignoriert
Application.ScreenUpdating = False ' Bildschirm-Aktualisierung wird hier deaktiviert;
' Ansonsten dauert der Vorgang noch ein wenig länger, da er sonst jede Änderung sofort anzeigt
For Each C In Selection
With C
Temp = ""
For i = 1 To Len(.Text)
If InStr(1, erlaubt, Mid(.Text, i, 1), vbTextCompare) > 0 Then
Temp = Temp & Mid(.Text, i, 1)
End If
Next i
.Value = Temp
End With
Next C
Application.ScreenUpdating = True ' Jetzt wird die Anzeige wieder aktualisiert
Ende = Time ' <- hier wird die Zeitmessung gestoppt
MsgBox "Start: " & Start & vbCrLf & "Ende: " & Ende, vbInformation, "...fertig!" ' hier wird angezeigt, wie lange der ganze Vorgang gedauert hat
End Sub
Die wichtigsten Stellen sind kommentiert.
Jetzt nur noch einen Bereich markieren, der bereinigt werden soll, und dann
Extras -> Makro -> Makros...
oder
Alt+F8
Dann das Makro Zeichenloeschung auswählen...
Bei Fragen oder Anregungen, her damit
Lonesome Walker
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 40612
Url: https://administrator.de/contentid/40612
Ausgedruckt am: 21.11.2024 um 16:11 Uhr
8 Kommentare
Neuester Kommentar
Hallo Lonesome Walker,
ich nochmal, habe mein Problem von gestern mit den Sonderzeichen, die ich in Umlaute getauscht haben möchte weitestgehend gelöst. es handelt sich um Unicodes, die ich durch folgendes austauschen kann:
Cells.Replace What:=StrConv("„%", vbFromUnicode), Replacement:="Ü", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=False, SearchFormat:=True, ReplaceFormat:=False
usw.
Das funktioniert auch bei allen Sonderzeichen, außer dem Ä (Großbuchstaben), weil das den Code " %" hat. Liegt es am Leerzeichen innerhalb des Codes? Jetzt kam mir die Idee, dass ich ja sonst, wenn ich nicht dahinter komme, wie er mir das Zeichen inkl. Leerzeichen erkennt, Deine Anweisung zum Löschen aller Sonderzeichen dahingehend abwandel, dass er mir, nachdem er alles anderen ausgetauscht hat, das verbleibende anstelle zu löschen in ein Ä umwandelt. Leider bin ich auf dem Gebiet nicht fit genug, welche Stelle müßte ich in Deinem Makro ändern, um das zu erreichen, dass er nicht alle Sonderzeichen löscht, sondern in ein Ä umwandelt.
Vielen Dank im Voraus!
Marlu
ich nochmal, habe mein Problem von gestern mit den Sonderzeichen, die ich in Umlaute getauscht haben möchte weitestgehend gelöst. es handelt sich um Unicodes, die ich durch folgendes austauschen kann:
Cells.Replace What:=StrConv("„%", vbFromUnicode), Replacement:="Ü", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=False, SearchFormat:=True, ReplaceFormat:=False
usw.
Das funktioniert auch bei allen Sonderzeichen, außer dem Ä (Großbuchstaben), weil das den Code " %" hat. Liegt es am Leerzeichen innerhalb des Codes? Jetzt kam mir die Idee, dass ich ja sonst, wenn ich nicht dahinter komme, wie er mir das Zeichen inkl. Leerzeichen erkennt, Deine Anweisung zum Löschen aller Sonderzeichen dahingehend abwandel, dass er mir, nachdem er alles anderen ausgetauscht hat, das verbleibende anstelle zu löschen in ein Ä umwandelt. Leider bin ich auf dem Gebiet nicht fit genug, welche Stelle müßte ich in Deinem Makro ändern, um das zu erreichen, dass er nicht alle Sonderzeichen löscht, sondern in ein Ä umwandelt.
Vielen Dank im Voraus!
Marlu
Hallo,
ich habe gerade ein Makro mit oben angegebenem Code erstellt und in meiner Excel datei laufen lassen.. Funktioniert prima!! Vielen Dank erstmal hierzu. Bis auf eine Sache, die bei mir der Fall ist. Die Excel Liste ist ein Download aus einer HTML Datei, in der daher sowas wie <div> vorkommt.. Nun, beim Anwenden des Makros entfernt er zwar die Zeichen <> , aber das Wort div nicht Da ja die daraus bestehenden Buchstaben erlaubt sind..
Gibt es einen Weg, in der ich spezifisch angeben kann, dass er z. B <div> , <strong>, etc.. ersetzen soll?
Vielen lieben Dank!!!
Liebe Grüße
Hülya
ich habe gerade ein Makro mit oben angegebenem Code erstellt und in meiner Excel datei laufen lassen.. Funktioniert prima!! Vielen Dank erstmal hierzu. Bis auf eine Sache, die bei mir der Fall ist. Die Excel Liste ist ein Download aus einer HTML Datei, in der daher sowas wie <div> vorkommt.. Nun, beim Anwenden des Makros entfernt er zwar die Zeichen <> , aber das Wort div nicht Da ja die daraus bestehenden Buchstaben erlaubt sind..
Gibt es einen Weg, in der ich spezifisch angeben kann, dass er z. B <div> , <strong>, etc.. ersetzen soll?
Vielen lieben Dank!!!
Liebe Grüße
Hülya
Hallo Zusammen,
sehr sehr geile Sache dieses Teil!
Ich bin leider total unerfahren in Sachen VBA-Schreiben, erkenne aber den Nutzen und finde es so mega spassig damit zu arbeiten.
Kann mir einer Sagen, was ich machen muss, wodurch das gelöschte Sonderzeichen durch ein Leerzeichen ersetzt wird?!
Danke und Gruß
Winkler84
sehr sehr geile Sache dieses Teil!
Ich bin leider total unerfahren in Sachen VBA-Schreiben, erkenne aber den Nutzen und finde es so mega spassig damit zu arbeiten.
Kann mir einer Sagen, was ich machen muss, wodurch das gelöschte Sonderzeichen durch ein Leerzeichen ersetzt wird?!
Danke und Gruß
Winkler84