下面是从Outlook邮件中下载附件的脚本。下载具有相同名称的附件而不覆盖
Public Sub SaveAttachmentsToDisk(MItem As Outlook.MailItem)
Dim oAttachment As Outlook.Attachment
Dim sSaveFolder As String
Dim dateFormat
dateFormat = Format(Now, "yyyy-mm-dd")
sSaveFolder = "c:\My\temp\"
For Each oAttachment In MItem.Attachments
oAttachment.SaveAsFile sSaveFolder & oAttachment.DisplayName
Next
End Sub
它仅在附件名称不同时下载并存储在我的代码中提及的路径中。
例如,我收到附件为'List.csv'的邮件。我用同样的名字收到了大约10次的邮件。
但是只有一个文件(最近一个)被保存在路径中。
最终代码为我工作。
Public Sub saveAttachtoDisk(itm As Outlook.MailItem)
Dim objAtt As Outlook.Attachment
Dim saveFolder As String
Dim dt30daysAgo As Date
dt30daysAgo = DateAdd("d", -30, Now)
saveFolder = "c:\My\temp"
For Each objAtt In itm.Attachments
If itm.ReceivedTime > dt30daysAgo Then
If objAtt.FileName <> "list.csv" Then
objAtt.SaveAsFile saveFolder & "\" & objAtt.FileName
Else
objAtt.SaveAsFile saveFolder & "\" & itm.Subject & objAtt.FileName
End If
End If
Next
End Sub
如果这些附件具有相同的名称,我猜测它们将被覆盖,请尝试在文件名的末尾添加类似计数器的内容。或者可能是电子邮件的发送日期 – gizlmo
因此,请在保存前检查文件是否存在,如果确实存在,则更改副本的文件名。 –