Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Sonderzeichen via Function eliminieren

Forumthread: Sonderzeichen via Function eliminieren

Sonderzeichen via Function eliminieren
Andreas
Hallo Herber Fans,
ich suche nach einer Möglichkeit Sonderzeichen, bzw. Zeichen, die störend sein können (z.B. „?“ in einer Namensdefinition) zu löschen. Ich habe mir, bzw. wollte mir… eine Function schreiben, die von jedem Code aufgerufen werden kann. Beim Aufruf wird der String mitgegeben der gesäubert werden soll und dieser steht nach Function Durchlauf in der aufrufenden Prozedur zur Verfügung. Und genau daran scheitere ich gerade… Es ist vermutlich nur ein marginaler Fehler, aber ich komme nicht drauf. Ich habe mit Functions auch nicht so viel Erfahrung und die VBA Hilfe bringt in meinem Kopfknoten keinen Durchbruch.
https://www.herber.de/bbs/user/71590.xls
Modul1, Prozedur „SonderzeichenTest“ startet den Aufruf.
Ich würde mich freuen, wenn sich jemand das einmal ansehen könnte.
Vielen Dank und Grüße,
Andreas Hanisch
Anzeige

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

Betreff
Benutzer
Anzeige
AW: Sonderzeichen via Function eliminieren
17.09.2010 20:14:58
Hajo_Zi
Hallo Andreas,
Option Explicit
Sub SonderzeichenTest()
Dim strTEST As String
strTEST = "hund,katze:maus\igel/nashorn?marder"
Debug.Print "1:"; strTEST
strTEST = fncSpecialCharacterElimination(strTEST, "")
'Debug.Print "Ende :"; WorksheetFunction.Clean(strTEST)         'Clean bringt in diesem  _
Kontext leider nichts
Debug.Print "3:"; strTEST
End Sub
Public Function fncSpecialCharacterElimination(strString As String, strReplace As String)
Dim arrSpecialCharacters() 'As String
Dim i As Long
arrSpecialCharacters = Array(",", ":", "\", "/", "?", "*", "[", "]", " ")
For i = 0 To UBound(arrSpecialCharacters)
strString = Application.Substitute(strString, arrSpecialCharacters(i), strReplace)
Next i
fncSpecialCharacterElimination = strString
Debug.Print "2:"; strString
End Function

Anzeige
AW: Sonderzeichen via Function eliminieren
17.09.2010 20:16:47
JogyB
Hallo Andreas,
das sollte Dir weiterhelfen, habe ich mal für Dateinamen gebastelt:
' Entfernt ungültige Zeichen aus einem Dateinamen - ohne Pfad
' Wenn komplett ungültig, dann wird leerer String zurückgegeben
Function repBadFileChars(ByVal daTei As String) As String
Dim regEx As Object
Set regEx = CreateObject("Vbscript.Regexp")
' Ersetzen der ungültigen Zeichen durch Leerzeichen
With regEx
.IgnoreCase = True
' Suchmuster
.Pattern = "[?"":|\/*]"
.Global = True
daTei = .Replace(daTei, " ")
End With
' Leerzeichen an Anfang und Ende entfernen
' können ja hierbei entstehen
daTei = Trim(daTei)
End Function

Hier noch eine Anleitung für den Aufbau der regulären Ausdrücke:
http://www.activevb.de/rubriken/kolumne/kol_19/regexp.html
Gruß, Jogy
Anzeige
AW: Sonderzeichen via Function eliminieren
17.09.2010 20:40:24
Andreas
Hallo Hajo, hi JogyB,
wow! Das war schnell. Und es läuft alles! Erst habe ich mich noch geärgert, daß ich nicht selber auf die eine kleine Zeile gekommen bin, die HaJo eingefügt hat "fncSpecialCharacterElimination = strString", aber hätte ich die Frage im Forum nicht gestellt, dann hätte ich nicht die Anregung von JogyB gesehen über "CreateObject" zu gehen. Dieser Ansatz erscheint mir sehr interessant und werde noch weiter diesbezüglich lesen.
Vielen, vielen Dank Euch beiden. Habt ein tolles Wochenende.
Grüße, Andreas Hanisch
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Sonderzeichen in Excel effektiv entfernen


Schritt-für-Schritt-Anleitung

Um ungültige Zeichen aus Dateinamen zu entfernen oder Sonderzeichen zu säubern, kannst Du die folgenden Schritte ausführen:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.
  2. Ein neues Modul erstellen:

    • Klicke mit der rechten Maustaste auf "VBAProject (DeineArbeitsmappe)" und wähle "Einfügen" > "Modul".
  3. Code zum Entfernen von Sonderzeichen einfügen:

    • Füge den folgenden Code in das Modul ein, um ungültige Zeichen aus Dateinamen zu entfernen:
    Function repBadFileChars(ByVal daTei As String) As String
       Dim regEx As Object
       Set regEx = CreateObject("Vbscript.Regexp")
    
       With regEx
           .IgnoreCase = True
           .Pattern = "[?""|\/*]" ' Muster für ungültige Zeichen
           .Global = True
           daTei = .Replace(daTei, " ")
       End With
    
       daTei = Trim(daTei) ' Leerzeichen am Anfang und Ende entfernen
       repBadFileChars = daTei
    End Function
  4. Die Funktion verwenden:

    • Du kannst die Funktion repBadFileChars jetzt in Deinen Excel-Formeln verwenden, um ungültige Zeichen zu entfernen.

Häufige Fehler und Lösungen

1. Fehler: Funktion gibt leeren String zurück

  • Lösung: Überprüfe, ob der Eingabestring tatsächlich ungültige Zeichen enthält. Wenn alle Zeichen gültig sind, gibt die Funktion einen leeren String zurück.

2. Fehler: RegEx funktioniert nicht

  • Lösung: Stelle sicher, dass der RegEx korrekt initialisiert wurde. Überprüfe auch die Rechte der VBA-Umgebung, falls die Funktion nicht wie erwartet funktioniert.

Alternative Methoden

Eine alternative Methode zum Entfernen von Sonderzeichen in Excel ist die Verwendung von Excel-Formeln. Zum Beispiel kannst Du die SUBSTITUTE-Funktion verwenden:

=SUBSTITUTE(A1, "?", "")

Du kannst diese Methode erweitern, um weitere ungültige Zeichen zu ersetzen.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie Du ungültige Zeichen aus Dateinamen entfernen kannst:

  1. Beispiel für einen Dateinamen:

    • Eingabe: Mein?Dokument:Test*Datei
    • Ausgabe: Mein Dokument Test Datei
  2. VBA Beispiel:

    • Verwende die folgende Prozedur, um die Funktion für einen bestimmten String zu testen:
    Sub TestRemoveSpecialChars()
       Dim result As String
       result = repBadFileChars("Mein?Dokument:Test*Datei")
       Debug.Print result ' Gibt "Mein Dokument Test Datei" aus
    End Sub

Tipps für Profis

  • RegEx anpassen: Du kannst das Muster in der Pattern-Eigenschaft anpassen, um weitere ungültige Zeichen zu entfernen.
  • Fehlerbehandlung einfügen: Implementiere eine Fehlerbehandlung in Deiner Funktion, um sicherzustellen, dass der Code auch bei falschen Eingaben stabil bleibt.
  • Wiederverwendbare Funktionen: Erstelle mehrere Funktionen für verschiedene Anwendungsfälle, um die Wartbarkeit Deines Codes zu erhöhen.

FAQ: Häufige Fragen

1. Frage: Was sind ungültige Zeichen in Dateinamen? Ungültige Zeichen sind alle Zeichen, die vom Betriebssystem nicht in Dateinamen verwendet werden dürfen, z.B. /, \, :, *, ?, ".

2. Frage: Wie kann ich VBA verwenden, um Sonderzeichen zu entfernen? Du kannst die oben angegebene Funktion repBadFileChars verwenden, um ungültige Zeichen aus Strings in Excel zu entfernen.

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