如何在Outlook中将多封邮件的所有附件保存到文件夹?
使用Outlook内置的“保存所有附件”功能,可以轻松保存单封邮件中的所有附件。但是,如果你想一次性从多封邮件中保存所有附件,则没有直接的功能可以帮助你完成。你需要反复在每封邮件中应用“保存所有附件”功能,直到所有附件都被保存下来。这非常耗时。本文将介绍两种方法,帮助你在Outlook中轻松批量保存多封邮件的所有附件到指定文件夹。
使用VBA代码将多封邮件的所有附件保存到文件夹
通过一款出色的工具,只需几次点击即可将多封邮件的所有附件保存到文件夹
使用VBA代码将多封邮件的所有附件保存到文件夹
本节将以分步指南的形式演示一段VBA代码,帮助你快速将多封邮件的所有附件一次性保存到指定文件夹。请按照以下步骤操作:
1. 首先,你需要在计算机上创建一个用于保存附件的文件夹。
进入“文档”文件夹,并创建一个名为“Attachments”的文件夹。参见截图:

2. 选择包含要保存附件的邮件,然后按下“Alt” + “F11”键打开“Microsoft Visual Basic for Applications”窗口。
3. 点击“插入” > “模块”以打开“模块”窗口,然后将以下VBA代码之一复制到窗口中。
VBA代码1:批量保存多封邮件的附件(直接保存同名附件)
注意:此代码会通过在文件名后添加数字1、2、3...来保存完全同名的附件。
Dim GCount As Integer
Dim GFilepath As String
Public Sub SaveAttachments()
'Update 20200821
Dim xMailItem As Outlook.MailItem
Dim xAttachments As Outlook.Attachments
Dim xSelection As Outlook.Selection
Dim i As Long
Dim xAttCount As Long
Dim xFilePath As String, xFolderPath As String, xSaveFiles As String
On Error Resume Next
xFolderPath = CreateObject("WScript.Shell").SpecialFolders(16)
Set xSelection = Outlook.Application.ActiveExplorer.Selection
xFolderPath = xFolderPath & "\Attachments\"
If VBA.Dir(xFolderPath, vbDirectory) = vbNullString Then
VBA.MkDir xFolderPath
End If
GFilepath = ""
For Each xMailItem In xSelection
Set xAttachments = xMailItem.Attachments
xAttCount = xAttachments.Count
xSaveFiles = ""
If xAttCount > 0 Then
For i = xAttCount To 1 Step -1
GCount = 0
xFilePath = xFolderPath & xAttachments.Item(i).FileName
GFilepath = xFilePath
xFilePath = FileRename(xFilePath)
If IsEmbeddedAttachment(xAttachments.Item(i)) = False Then
xAttachments.Item(i).SaveAsFile xFilePath
If xMailItem.BodyFormat <> olFormatHTML Then
xSaveFiles = xSaveFiles & vbCrLf & "<Error! Hyperlink reference not valid.>"
Else
xSaveFiles = xSaveFiles & "<br>" & "<a href='file://" & xFilePath & "'>" & xFilePath & "</a>"
End If
End If
Next i
End If
Next
Set xAttachments = Nothing
Set xMailItem = Nothing
Set xSelection = Nothing
End Sub
Function FileRename(FilePath As String) As String
Dim xPath As String
Dim xFso As FileSystemObject
On Error Resume Next
Set xFso = CreateObject("Scripting.FileSystemObject")
xPath = FilePath
FileRename = xPath
If xFso.FileExists(xPath) Then
GCount = GCount + 1
xPath = xFso.GetParentFolderName(GFilepath) & "\" & xFso.GetBaseName(GFilepath) & " " & GCount & "." + xFso.GetExtensionName(GFilepath)
FileRename = FileRename(xPath)
End If
xFso = Nothing
End Function
Function IsEmbeddedAttachment(Attach As Attachment)
Dim xItem As MailItem
Dim xCid As String
Dim xID As String
Dim xHtml As String
On Error Resume Next
IsEmbeddedAttachment = False
Set xItem = Attach.Parent
If xItem.BodyFormat <> olFormatHTML Then Exit Function
xCid = ""
xCid = Attach.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x3712001F")
If xCid <> "" Then
xHtml = xItem.HTMLBody
xID = "cid:" & xCid
If InStr(xHtml, xID) > 0 Then
IsEmbeddedAttachment = True
End If
End If
End Function
VBA代码2:批量保存多封邮件的附件(检查重复项)
Public Sub SaveAttachments()
'Update 20200821
Dim xMailItem As Outlook.MailItem
Dim xAttachments As Outlook.Attachments
Dim xSelection As Outlook.Selection
Dim i As Long
Dim xAttCount As Long
Dim xFilePath As String, xFolderPath As String, xSaveFiles As String
Dim xYesNo As Integer
Dim xFlag As Boolean
On Error Resume Next
xFolderPath = CreateObject("WScript.Shell").SpecialFolders(16)
Set xSelection = Outlook.Application.ActiveExplorer.Selection
xFolderPath = xFolderPath & "\Attachments\"
If VBA.Dir(xFolderPath, vbDirectory) = vbNullString Then
VBA.MkDir xFolderPath
End If
For Each xMailItem In xSelection
Set xAttachments = xMailItem.Attachments
xAttCount = xAttachments.Count
xSaveFiles = ""
If xAttCount > 0 Then
For i = xAttCount To 1 Step -1
xFilePath = xFolderPath & xAttachments.Item(i).FileName
xFlag = True
If VBA.Dir(xFilePath, 16) <> Empty Then
xYesNo = MsgBox("The file is exists, do you want to replace it", vbYesNo + vbInformation, "Kutools for Outlook")
If xYesNo = vbNo Then xFlag = False
End If
If xFlag = True Then
xAttachments.Item(i).SaveAsFile xFilePath
If xMailItem.BodyFormat <> olFormatHTML Then
xSaveFiles = xSaveFiles & vbCrLf & "<Error! Hyperlink reference not valid.>"
Else
xSaveFiles = xSaveFiles & "<br>" & "<a href='file://" & xFilePath & "'>" & xFilePath & "</a>"
End If
End If
Next i
End If
Next
Set xAttachments = Nothing
Set xMailItem = Nothing
Set xSelection = Nothing
End Sub

注意事项:

5. 按下“F5”键运行代码。
然后,所选邮件中的所有附件都将保存到你在步骤1中创建的文件夹中。
注意:可能会弹出一个“Microsoft Outlook”提示框,请点击“允许”按钮继续。
通过一款出色的工具将多封邮件的所有附件保存到文件夹
如果你对VBA不熟悉,这里强烈推荐你使用“Kutools for Outlook”的“保存所有附件”工具。使用该工具,你可以通过几次点击轻松地在Outlook中一次性保存多封邮件的所有附件。
使用Kutools for Outlook解锁无与伦比的邮件处理效率!永久免费获取 70 项强大功能。立即下载免费版本!
1. 选择包含要保存附件的邮件。
提示:你可以按住“Ctrl”键并逐个选择多个非连续的邮件;或者按住“Shift”键并选择第一个和最后一个邮件来选择多个连续的邮件。
2. 点击“Kutools Plus” > “Attachment Tools” > “Save All”。参见截图:
3. 在“保存设置”对话框中,点击 按钮选择一个文件夹来保存附件,然后点击“确定”按钮。

4. 在接下来弹出的对话框中两次点击“确定”。然后,所选邮件中的所有附件都会一次性保存到指定的文件夹中。
注意事项:
- 1. 如果你想根据邮件将附件保存到不同的文件夹中,请勾选“以以下样式创建子文件夹”框,并从下拉菜单中选择一种文件夹样式。
- 2. 除了保存所有附件外,你还可以根据特定条件保存附件。例如,如果你只想保存文件名包含“发票”字样的PDF文件附件,请点击“高级选项”按钮展开条件,然后按如下方式配置。
- 3. 如果你想在邮件到达时自动保存附件,“Auto Save attachments”功能可以提供帮助。
- 4. 若要直接从选定的邮件中拆离附件,“Detach All attachments”功能可以为你提供帮助。
相关文章
在Outlook中将附件插入到邮件正文 正常情况下,附件会显示在撰写邮件的“附件”字段中。本教程提供了几种方法,帮助你轻松地在Outlook中将附件插入到邮件正文中。
自动从Outlook下载/保存附件到特定文件夹 一般来说,你可以通过点击Outlook中的“附件” > “保存所有附件”来保存一封邮件的所有附件。但是,如果你需要保存所有已接收和正在接收的邮件的所有附件,有什么好办法吗?本文将介绍两种解决方案,自动将Outlook中的附件下载到特定文件夹。
在Outlook中打印一封或多封邮件中的所有附件 众所周知,当你在Microsoft Outlook中点击“文件” > “打印”时,只会打印邮件内容,如标题、正文等,但不会打印附件。本文将向你展示如何在Microsoft Outlook中轻松打印选定邮件中的所有附件。
在Outlook中搜索附件(内容)中的单词 当我们在Outlook的即时搜索框中输入关键词时,它会在邮件的主题、正文、附件等中搜索该关键词。但现在我只需要在Outlook中搜索附件内容中的关键词,有什么办法吗?本文将向你展示如何轻松地在Outlook中搜索附件内容中的单词的详细步骤。
在Outlook中回复时保留附件 当我们在Microsoft Outlook中转发邮件时,原邮件中的附件会保留在转发的邮件中。然而,当我们回复邮件时,原邮件中的附件不会附加到新的回复邮件中。本文将介绍一些在Microsoft Outlook中回复时保留原附件的小技巧。
最佳 Office 办公效率工具
重磅消息:Kutools for Outlook 推出免费版本!
体验全新 Kutools for Outlook 免费版,70 多个强大功能,永久免费使用!点击立即下载!
🤖 Kutools AI :利用先进的AI技术轻松处理邮件,包括答复、总结、优化、扩展、翻译和撰写邮件。
📧 邮件自动化:自动答复(支持POP和IMAP) /计划发送邮件 /发送邮件时根据规则自动抄送密送 / 自动转发(高级规则) / 自动添加问候语 / 自动将群发邮件拆分为单独邮件 ...
📨 邮件管理:撤回邮件 / 按主题等方式阻止诈骗邮件 / 删除重复邮件 / 高级搜索 / 整合文件夹 ...
📁 附件专家:批量保存 / 批量拆离 / 批量压缩 / 自动保存 / 自动拆离 / 自动压缩 ...
🌟 界面魔法:😊更多精美个性表情 /重要邮件来临时提醒您 / 最小化而非关闭 Outlook ...
👍 一键高效操作:带附件全部答复 /反钓鱼邮件 / 🕘显示发件人时区 ...
👩🏼🤝👩🏻 联系人与日历:从选中的邮件批量添加联系人 / 将联系人组拆分为多个独立组 / 移除生日提醒 ...
使用 Kutools,支持英语、西班牙语、德语、法语、中文及40 多种其他语言,满足您的语言偏好!
一键解锁 Kutools for Outlook。无需等待,立即下载,提升办公效率!

