Outlook Attachments....nicht alle werden gespeichert
Hallo zusammen
ich versuche mich gerade in VBA.
Allerdings habe ich das Problem das nicht alle Attachments gespeichert werden.
Duplicate werden einfach ausgelassen
Mein Code
Was mache ich falsch? bzw was fehlt mir den damit der Code Funktioniert?
ich versuche mich gerade in VBA.
Allerdings habe ich das Problem das nicht alle Attachments gespeichert werden.
Duplicate werden einfach ausgelassen
Mein Code
Public Sub saveAttachtoDisk(itm As Outlook.MailItem)
Dim objAtt As Outlook.Attachment
Dim saveFolder As String
Dim dateFormat
dateFormat = Format(Now, "yyyy-mm-dd H-mm")
If Dir("C:\Temp", vbDirectory) = "" Then
MkDir ("C:\Temp")
Else
saveFolder = "c:\temp\"
For Each objAtt In itm.Attachments
objAtt.SaveAsFile saveFolder & "\" & dateFormat & "-" & objAtt.DisplayName
Set objAtt = Nothing
Next
End If
End Sub
Was mache ich falsch? bzw was fehlt mir den damit der Code Funktioniert?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 245951
Url: https://administrator.de/contentid/245951
Ausgedruckt am: 25.11.2024 um 03:11 Uhr
5 Kommentare
Neuester Kommentar
Zitat von @Dpole86:
Duplicate werden einfach ausgelassen
Was mache ich falsch? bzw was fehlt mir den damit der Code Funktioniert?
irgendwie logisch das wenn eine Datei schon im Dateisystem existiert, diese nicht erneut von der SaveAsFile-Funktion unter dem gleichen Namen abgespeichert werden kann. Das musst du voher überprüfen und gegebenenfalls einen neuen Namen dafür generieren bzw. einfach eine Nummer anhängen. z.B. so:Duplicate werden einfach ausgelassen
Was mache ich falsch? bzw was fehlt mir den damit der Code Funktioniert?
..
...
....
dim fso
set fso = CreateObject("Scripting.FilesystemObject")
For Each objAtt In itm.Attachments
filename = saveFolder & "\" & dateFormat & "-" & objAtt.Filename
number = 1
while fso.FileExists(filename)
filename = saveFolder & "\" & dateFormat & "-" & fso.GetBasename(objAtt.Filename) & "(" & number & ")." & fso.GetExtensionName(objAtt.Filename)
number = number + 1
Wend
objAtt.SaveAsFile filename
Set objAtt = Nothing
Next
11:50 : -edit- Fehler in Zeile 10 korrigiert
einmal hier (in deinem Code Zeile 15)
und dann noch hier in der while-Schleife
btw. mach in Zeile 12 noch bei
den abschließenden Backslash weg ....
filename = saveFolder & "\" & fso.GetBasename(objAtt.Filename) & "-" & dateFormat & "." & fso.GetExtensionName(objAtt.Filename)
filename = saveFolder & "\" & fso.GetBasename(objAtt.Filename) & "-" & dateFormat & "(" & number & ")." & fso.GetExtensionName(objAtt.Filename)
btw. mach in Zeile 12 noch bei
savefolder = "c:\Temp\"