Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1852to1856
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Sonderzeichen Dateiname

Sonderzeichen Dateiname
25.10.2021 18:02:17
Basti
Hallo Zusammen,
ich würde gerne ein Makro optimieren.
Das Makro erstellt eine Datei, der Dateiname wird u.a. aus dem Projektnamen generiert.
Wenn im Projektnamen jedoch ein Sonderzeichen enthalten ist, bricht das Makro natürlich ab.
An folgender Stelle bricht das Makro ab:
ActiveWorkbook.SaveAs Filename:=pathDataName
gibt es eine Möglichkeit, Sonderzeichen durch "nichts" zu ersetzten?
Danke und viele Grüße
Basti

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sonderzeichen Dateiname
25.10.2021 18:13:46
Rudi
Hallo,

ActiveWorkbook.SaveAs Filename:=CleanFilename(pathDataName)
in ein Modul:

Public Function CleanFilename(ByVal sFilename As String, _
Optional ByVal sChar As String = "") As String
Dim oRegExp As RegExp
Set oRegExp = New RegExp
With oRegExp
.IgnoreCase = True
.Global = True
.MultiLine = True
.Pattern = "[\\/:?*^""|]"
' alle nicht zulässigen Zeichen ersetzen
CleanFilename = .Replace(sFilename, sChar)
End With
Set oRegExp = Nothing
End Function
Gruß
Rudi
AW: Sonderzeichen Dateiname
25.10.2021 18:45:54
onur
Vielleicht solltest du ihm auch verraten, dass die Funktion ohne RegEx nicht laufen kann.
Anzeige
AW: Sonderzeichen Dateiname
26.10.2021 08:11:40
Yal
... und vielleicht sogar sagen, welche und wie:
in VB-Editor, auf "Extras", "Verweise..." gehen, "Microsoft VBScript Regular Expression 5.5" anhacken. Fertig
Dann kommt nach Tippen von
Dim R as R
den Ergenzungsvorschlag RegEx.
VG
Yal
AW: Sonderzeichen Dateiname
26.10.2021 08:26:22
Yal
Auch möglich ist die Umwandlung diesen verbotenen Zeichen in Webadresse-Form: Prozent-Zeichen + 2-stelligen Hexa-Ascii-Code:

Public Function CodeFilename(ByVal sFilename As String) As String
Dim i
Const cListe = "[\\/:?*^""|]"
For i = Len(sFilename) To 1 Step -1
If InStr(1, cListe, Mid(sFilename, i, 1)) Then sFilename = Left(sFilename, i - 1) & "%" & Hex(Asc(Mid(sFilename, i, 1))) & Right(sFilename, Len(sFilename) - i)
Next
CodeFilename = sFilename
End Function
So kann man diesen kodierte Zeichen auch zurückrechnen.
Wenn man keine Leerzeichen haben möchte, Leerzeichen in cListe hinzufügen. Daraus wird eine %20 gemacht.
VG
Yal
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige