【发布时间】:2021-02-22 18:27:48
【问题描述】:
我正在尝试将具有特定主题行的电子邮件中的所有附件自动保存到文件夹中。我已经尝试从 SO 和其他来源的其他问题中实施多种解决方案,但它们不起作用。 我通常会尝试遵循此处概述的流程:https://windowsreport.com/outlook-rule-download-attachments/
我在 VBA 编辑器中有以下脚本。
Public Sub SaveAttachmentsToDisk(MItem As Outlook.MailItem)
Dim oAttachment As Outlook.Attachment
Dim sSaveFolder As String
sSaveFolder = "H:\temp\_nre_POs\"
For Each oAttachment In MItem.Attachments
oAttachment.SaveAsFile sSaveFolder & oAttachment.DisplayName
Set oAttachment = Nothing
Next
End Sub
我还创建了以下规则来处理主题行。将电子邮件移动到 _Invoices 文件夹的规则已经到位并且工作了几个月,我只是添加了“运行脚本”选项。在收件箱中的现有电子邮件上运行规则时,我没有收到任何错误,但我也没有在目标文件夹中显示任何附件。理想情况下,这应该在后台运行,但我对更手动的过程持开放态度。 Pic of outlook rule
编辑:我最终使用下面的脚本让它工作。它可能有点乱,但它有效。
Public Sub Application_Startup()
Dim MItem As MailItem
Dim oAttachment As Attachment
Dim sSaveFolder As String
Dim oDefInbox As Folder
Dim targetFolder As Folder
Dim myItems As Outlook.Items
Dim Item As Object
Set oDefInbox = Session.GetDefaultFolder(olFolderInbox)
Set targetFolder = Session.GetDefaultFolder(olFolderInbox).Parent.Folders("_Invoices")
sSaveFolder = "H:\temp\_nre_POs"
For Each MItem In targetFolder.Items
If MItem.UnRead = True Then
For Each oAttachment In MItem.Attachments
oAttachment.SaveAsFile sSaveFolder & oAttachment.DisplayName
Set oAttachment = Nothing
Next oAttachment
MItem.UnRead = False
End If
Next MItem
End Sub
【问题讨论】: