Sie wollen E-Mails per VBA mit Betreff als Dateiname speichern? Dann haben Sie das Problem, dass ein Smiley oder ein Weihnachtsmann aus dem Betreff kein gültiges Zeichen für einen Dateinamen ist. Auch Punkte und Beistriche werden in einem Dateinamen nicht zugelassen. Ihr Skript stürzt ab 😦
Abhilfe schafft hier folgende Funktion:
Public Function makeSaveName(myText As Variant) As Variant
Dim Pos As Long
Dim Chars As Variant
For Pos = 1 To Len(myText)
If InStr(1, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ -_äöüÄÖÜß0123456789", Mid(myText, Pos, 1)) <> 0 Then
makeSaveName = makeSaveName & Mid(myText, Pos, 1)
End If
Next Pos
End Function
Sie pickt sich aus dem übergebenen Originaltext nur mehr die in der Zeichenkette angegebenen Zeichen heraus; der Rest wird weggelassen.
Aus „Frohe Weihnachten, Ihr Lieben!!!“ macht sie „Frohe Weihnachten Ihr Lieben“. Und alles ist gut.
Die Verwendung im Code sieht so aus:
mAtt.SaveAsFile "C:\Users\KatharinaSchwarzer\" & Year(Date) & "\Rechnungen\" & makeSaveName(myItem.Sender) & "_" & Format(Date, "yyyymmdd") & "_" & makeSaveName(myItem.Subject)
Also: Um Sender und Subject herum (aus beiden wird hier der Dateiname gebastelt) kommt jeweils der Funktionsaufruf.
Fertig!
Gefällt mir:
Like Wird geladen …