适用场景和介绍
适用于Outlook,当你需要下载指定邮件中的全部附件时,可以使用本回答中代码。
具体实现步骤
1. 开启Outlook宏
在Outlook选项中选中‘信任中心’,点击’信任中心设置‘。
选中’宏设置‘,并选择’启用所有宏‘,右下角确认设置。
2. 新建文件夹,选中所需邮件
右键收件箱,新建文件夹,这里我新建了一个名为’didi’的文件夹,将需要下载附件的邮件移动到’didi’文件夹中。
如下图所示:
3. 创建文件夹与编写脚本
点击Alt+F11进入编译
展开左侧项目,双击进入VB编辑界面
输入如下代码:
Sub Savetheattachment()
Dim vItem As Object
Set fldFolder = Outlook.Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox).Folders("didi")
Dim i As Integer
i = 0
For Each vItem In fldFolder.Items
i = i + 1
For Each att In vItem.Attachments
att.SaveAsFile "D:\Attachments\" & i & att.FileName
Next
Next
Set fldFolder = Nothing
End Sub
这里“didi”是你创建文件夹的名字,可自行替换
Set fldFolder = Outlook.Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox).Folders("didi")
"D:\Attachments"是你保存附件的位置,也请自行替换,并确保文件夹存在
att.SaveAsFile "D:\Attachments\" & i & att.FileName
4. 运行脚本下载附件
点击按钮或按F5运行脚本
查看文件夹,发现指定邮件中的所有附件已全部下载
5. 说明
下载文件前有数字前缀,这是为了避免附件名称相同导致下载失败,如果不想要前缀,可以用如下代码,但无法保证附件名相同而导致的下载失败问题:
Sub Savetheattachment()
Dim vItem As Object
Set fldFolder = Outlook.Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox).Folders("didi")
For Each vItem In fldFolder.Items
For Each att In vItem.Attachments
att.SaveAsFile "D:\Attachments\" & att.FileName
Next
Next
Set fldFolder = Nothing
End Sub