Sonderzeichen in Excel per Makro entfernen
21.09.2006
12:58:14 Uhr20437 Aufrufe
6 Antworten
12:58:14 Uhr
6 Antworten
Noch nicht bewertet
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.
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
Zuerst fügen wir in die aktuelle Excel-Arbeitsmappe ein Modul ein:
01.
Extras -> Makro -> Visual-Basic-Editor 02.
oder 03.
Alt+F11Dann Rechtsklick auf
01.
VBAProject(Arbeitsmappenname.xls) -> Einfügen -> ModulJetzt folgenden Text in die angezeigte leere Fläche kopieren:
01.
Public Sub Zeichenloeschung() 02.
Dim i As Long 03.
Dim Start As String 04.
Dim Ende As String 05.
Dim Temp As String 06.
Dim erlaubt As String 07.
Start = Time ' <- hier wird eine Zeitmessung eingeleitet 08.
erlaubt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!§$%&/()=?*#ß\ÄÖÜ@,-_:.+;<> " ' <- hier werden die Zeichen definiert, die erlaubt sind; 09.
' Groß-/Kleinschreibung wird ignoriert 10.
Application.ScreenUpdating = False ' Bildschirm-Aktualisierung wird hier deaktiviert; 11.
' Ansonsten dauert der Vorgang noch ein wenig länger, da er sonst jede Änderung sofort anzeigt 12.
For Each C In Selection 13.
With C 14.
Temp = "" 15.
For i = 1 To Len(.Text) 16.
If InStr(1, erlaubt, Mid(.Text, i, 1), vbTextCompare) > 0 Then 17.
Temp = Temp & Mid(.Text, i, 1) 18.
End If 19.
Next i 20.
.Value = Temp 21.
End With 22.
Next C 23.
Application.ScreenUpdating = True ' Jetzt wird die Anzeige wieder aktualisiert 24.
Ende = Time ' <- hier wird die Zeitmessung gestoppt 25.
MsgBox "Start: " & Start & vbCrLf & "Ende: " & Ende, vbInformation, "...fertig!" ' hier wird angezeigt, wie lange der ganze Vorgang gedauert hat 26.
End SubDie wichtigsten Stellen sind kommentiert.
Jetzt nur noch einen Bereich markieren, der bereinigt werden soll, und dann
01.
Extras -> Makro -> Makros... 02.
oder 03.
Alt+F8Dann das Makro Zeichenloeschung auswählen...
Bei Fragen oder Anregungen, her damit
Lonesome Walker
Marlu852 schreibt am 01.03.2007 um 12:11:44 Uhr
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
Lonesome Walker schreibt am 01.03.2007 um 14:10:05 Uhr
Bevor ich hier meine Zeit vergeude ... 
Sind das sensible Daten?
Kannst Du mir eine kopie zukommen lassen?
Lonesome Walker
Sind das sensible Daten?
Kannst Du mir eine kopie zukommen lassen?
Lonesome Walker
Bensefels schreibt am 18.11.2011 um 11:41:31 Uhr
Lieber Lonseome Walker,
das Makro ist bereits sehr praktisch. Vielen Dank dafür!
Wie müsste ich das Makro anpassen, damit es, anstatt die Sonderzeichen direkt zu löschen, die Zellen in denen Sonderzeichen vorhanden sind farbig markiert?
Vielen Dank im Voraus
Bensefels
das Makro ist bereits sehr praktisch. Vielen Dank dafür!
Wie müsste ich das Makro anpassen, damit es, anstatt die Sonderzeichen direkt zu löschen, die Zellen in denen Sonderzeichen vorhanden sind farbig markiert?
Vielen Dank im Voraus
Bensefels






