Bezug auf: Outlook Anlage speichern und umbenennen Betreffzeile VBA
Hallo liebes Forum,
ich möchte bitte noch einmal Bezug auf diesen Thread von Richter nehmen Outlook Anlage speichern und umbenennen Betreffzeile VBA
Ich habe seinen Erstcode übernommen welcher auch erfolgreich durchläuft und alle Attachments mit Urspüngsnamen abspeichert.
Auch mein Wunsch ist es die zu speichernden Dateien, i.d.R .jpg Dateien, mit der Betreffzeile der Mail im neuen Dateinamen zu versehen.
Im Thread macht hierzu "143728 (Level 1)" den Hinweis "dateiname = olitem.Subject & ".pdf" . Eigentlich sollte dies leicht in den Code einzupflegen sein. Mir gelingt dies leider nach langen Versuchen überhaupt nicht und bitte Euch mir bitte mitzuteilen wo ich in diesem Code die notwendigen Änderungen vornehmen muss.
Ich führe hier noch einmal den Code von "Richter" an:
Vielen Dank, Martin
ich möchte bitte noch einmal Bezug auf diesen Thread von Richter nehmen Outlook Anlage speichern und umbenennen Betreffzeile VBA
Ich habe seinen Erstcode übernommen welcher auch erfolgreich durchläuft und alle Attachments mit Urspüngsnamen abspeichert.
Auch mein Wunsch ist es die zu speichernden Dateien, i.d.R .jpg Dateien, mit der Betreffzeile der Mail im neuen Dateinamen zu versehen.
Im Thread macht hierzu "143728 (Level 1)" den Hinweis "dateiname = olitem.Subject & ".pdf" . Eigentlich sollte dies leicht in den Code einzupflegen sein. Mir gelingt dies leider nach langen Versuchen überhaupt nicht und bitte Euch mir bitte mitzuteilen wo ich in diesem Code die notwendigen Änderungen vornehmen muss.
Ich führe hier noch einmal den Code von "Richter" an:
Sub Anlagen_speichern()
'HIER DEN PFAD ÄNDERN ! ! !
Const fcPath As String = "C:\Users\xxx"
Dim olExplorer As Explorer
Dim olFolder As MAPIFolder
Dim olSelection As Selection
Dim olitem As MailItem
Dim lngAttCount As Long
Dim i As Long
Dim Anzahl As Long
Dim fcZahl As Integer
Dim fcName As String
Dim fcEndung As String
Dim dateiname As String
Set olExplorer = Application.ActiveExplorer
Set olFolder = Application.ActiveExplorer.CurrentFolder
Anzahl = 0
If Dir(fcPath, vbDirectory) <> "" Then
If olFolder.DefaultItemType = olMailItem Then
Set olSelection = olExplorer.Selection
'Für jede Email die Makiert ist
For Each olitem In olSelection
lngAttCount = olitem.Attachments.Count
'Falls es anhänge gibt
If lngAttCount > 0 Then
'Für jeden Anhang
For i = lngAttCount To 1 Step -1
With olitem.Attachments.Item(i)
'Falls Datei schon existiert einfach zahl hinter hängen
If CreateObject("Scripting.FileSystemObject").FileExists(fcPath & "\" & .FileName) Then
'Datei existiert schon -> Zahl hochzählen bis noch nicht existiert
fcZahl = 2
fcName = CreateObject("Scripting.FileSystemObject").GetBaseName(fcPath & "\" & .FileName)
fcEndung = CreateObject("Scripting.FileSystemObject").GetExtensionName(fcPath & "\" & .FileName)
While CreateObject("Scripting.FileSystemObject").FileExists(fcPath & "\" & fcName & "(" & CStr(fcZahl) & ")." & fcEndung)
fcZahl = fcZahl + 1
Wend
dateiname = fcName & "(" & CStr(fcZahl) & ")." & fcEndung
Else
'Datei existiert noch nicht
dateiname = .FileName
End If
'Datei speichern
.SaveAsFile fcPath & "\" & dateiname
End With
Anzahl = Anzahl + 1
Next i
End If
Next olitem
Else
MsgBox "In diesem Ordner befinden sich keine E-Mail-Nachrichten."
End If
If Anzahl < 1 Then
MsgBox "Keine Anlagen vorhanden"
Else
If Anzahl < 2 Then
MsgBox Anzahl & " Anlage gespeichert"
Else
MsgBox Anzahl & " Anlagen gespeichert"
End If
End If
Else
MsgBox "Der im Makro zum speichern der Anhänge eingetragene Pfad ""fcPath"" existiert nicht!"
End If
End Sub
Vielen Dank, Martin
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 644596
Url: https://administrator.de/forum/bezug-auf-outlook-anlage-speichern-und-umbenennen-betreffzeile-vba-644596.html
Ausgedruckt am: 22.05.2025 um 06:05 Uhr
7 Kommentare
Neuester Kommentar
Hallo Martin,
ich rate davon ab.
Du darfst nicht vergessen, dass das Dateisystem nebst Anwendungen gewisse Pfadlängen (Pfad + Dateiname) per Standard nicht überschreitet.
In Abhängigkeit zum OS kann man die Beschränkung zwar aufheben, aber dennoch hast Du ggf. das Problem, dass im Betreff Zeichen vorkommen können, die im Dateisystem bzw. im Dateinamen nicht erlaubt sind.
https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file
https://docs.microsoft.com/en-us/windows/win32/fileio/maximum-file-path- ...
Gruß
Andreas
ich rate davon ab.
Du darfst nicht vergessen, dass das Dateisystem nebst Anwendungen gewisse Pfadlängen (Pfad + Dateiname) per Standard nicht überschreitet.
In Abhängigkeit zum OS kann man die Beschränkung zwar aufheben, aber dennoch hast Du ggf. das Problem, dass im Betreff Zeichen vorkommen können, die im Dateisystem bzw. im Dateinamen nicht erlaubt sind.
https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file
https://docs.microsoft.com/en-us/windows/win32/fileio/maximum-file-path- ...
Gruß
Andreas
Es liegt an den Doppelpunkten im Betreff.
Zeile 47:
Zeile 50:
Das sollte die Doppelpunkte durch Bindestriche ersetzen.
Bedenke dass folgende Zeichen im Filesystem nicht erlaubt sind, da reserviert: : / \ * ? " < > |
Falls im Betreff die "" tatsächlich drin sind, sollten wir Deinen Code etwas umbauen.
Zeile 47:
dateiname = Replace(CStr(olitem.Subject),":","-",vbTextCompare) & fcName & "(" & CStr(fcZahl) & ")." & fcEndung
Zeile 50:
dateiname = Replace(CStr(olitem.Subject),":","-",vbTextCompare) & .FileName
Das sollte die Doppelpunkte durch Bindestriche ersetzen.
Bedenke dass folgende Zeichen im Filesystem nicht erlaubt sind, da reserviert: : / \ * ? " < > |
Falls im Betreff die "" tatsächlich drin sind, sollten wir Deinen Code etwas umbauen.