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?
Please also mark the comments that contributed to the solution of the article
Content-Key: 245951
Url: https://administrator.de/contentid/245951
Printed on: April 24, 2024 at 08:04 o'clock
5 Comments
Latest comment
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\"