如何在 Outlook 中打印一封或多封邮件的所有附件?
如您所知,在 Microsoft Outlook 中单击文件> 打印 时,只能打印邮件头和正文,附件无法打印。本文将为您演示如何在 Microsoft Outlook 中轻松打印所选的所有附件。
逐个打印一封邮件中的所有附件
Microsoft Outlook 为我们提供了快速打印功能,助您轻松逐个打印邮件中的附件。
1. 选择您稍后需要打印附件的邮件。
2. 点击此邮件中的任一附件,立即体验便捷操作。

3. 点击附件选项卡中操作组里的快速打印按钮。

注意:附件工具只有在点击邮件附件后,该功能才会被激活。
4. 在弹出的打开邮件附件对话框中,请单击“打开”按钮。

请注意,此步骤将在打开所选附件的同时打印该附件。
如需打印此邮件中的其他附件,请重复执行第 2 步至第 4 步。
在 Outlook 中快速保存/导出多封邮件中的所有附件
通常,我们可以通过激活附件工具并应用“全部保存附件”功能来保存一封邮件的附件。但如果需要从多封邮件或整个邮件文件夹中保存附件,该怎么办?不妨试试 Kutools for Outlook 的“全部保存”(附件)功能,轻松批量操作,提升效率!

批量打印一封邮件中的所有附件
如果一封邮件中包含多个附件,逐一打印会非常耗时。通过以下方法,您可以轻松批量打印所选邮件中的所有附件。
1. 请选择您稍后需要打印附件的邮件。
2. 在 Outlook 2010 或更高版本中,请依次点击文件 > 打印 > 打印选项。见下图:

3. 在“打印”对话框中,请勾选打印选项部分的“打印附件。附件仅会打印到默认打印机”选项。

4. 点击“打印”按钮,轻松完成打印操作。
5. 在弹出的“打开邮件附件”对话框中,点击“打开”按钮即可继续。(注意:该对话框会针对每个附件单独弹出。)

现在,所选邮件中的所有附件将一次性全部打印。
批量打印多封已选邮件中的所有附件及图片
若想在 Outlook 中同时打印多封邮件的所有附件及正文中的所有图片,请按照以下步骤操作并应用 VBA 代码。
1. 在邮件列表中,按住 Ctrl 或 Shift 键,选择需要打印附件的多封邮件。
2. 同时按下 Alt+F11 键,即可打开 Microsoft Visual Basic for Applications 窗口。
3. 在 Microsoft Visual Basic for Applications 窗口中,点击工具 > 引用,勾选 Microsoft Scripting Runtime 选项(如下图所示)。完成后,点击确定即可。

4. 点击插入 > 模块,然后将下方 VBA 代码粘贴到新建的模块窗口中。
VBA:批量打印多封 Outlook 邮件中的所有附件
Sub PrintAllAttachmentsInMultipleMails()
'Update by ExtendOffice 2022/08/03
Dim xShellApp As Object
Dim xFSO As Scripting.FileSystemObject
Dim xItem As Object
Dim xTempFldPath, xFilePath As String
Dim xSelItems As Outlook.Selection
Dim xMailItem As Outlook.MailItem
Dim xAttachments As Outlook.Attachments
Dim xAttachment As Outlook.Attachment
Dim xFile As File
On Error Resume Next
Set xFSO = New Scripting.FileSystemObject
xTempFldPath = xFSO.GetSpecialFolder(2).Path & "\Attachments " & Format(Now, "yyyymmddhhmmss") 'xFSO.GetSpecialFolder(2) For saving temporary files
If xFSO.FolderExists(xTemfldpath) = False Then 'create temporary folder
xFSO.CreateFolder (xTempFldPath)
End If
Set xSelItems = Outlook.ActiveExplorer.Selection
Set xShellApp = CreateObject("Shell.Application")
For Each xItem In xSelItems
If xItem.Class = OlObjectClass.olMail Then
Set xMailItem = xItem
Set xAttachments = xMailItem.Attachments
For Each xAttachment In xAttachments
xFilePath = xTempFldPath & "\" & xAttachment.FileName
xAttachment.SaveAsFile (xFilePath)
Next
End If
Next
For Each xFile In xFSO.GetFolder(xTempFldPath).Files
VBA.DoEvents
Call xShellApp.ShellExecute(xFile.Path, "", "", "print", 0)
Next
Set xSelItems = Nothing
Set xShellApp = Nothing
Set xFSO = Nothing
End Sub 5. 按下 F5 键或点击运行按钮即可运行此 VBA 代码。现在,邮件中选中的所有附件和正文图片都会被打印出来。
注意:
- 每插入一张图片时,系统都会弹出对话框,询问您是否确认打印;而其他文件类型则会直接进行打印。
- 如果邮件签名中包含图片,同样会弹出确认打印的对话框。
- 如果您遇到此项目中的宏已被禁用错误,请参考本教程:如何在 Outlook 中启用和禁用宏?
批量打印多封已选邮件中的所有附件(正文图片除外)
如果您只需打印多封邮件中的附件,而不打印正文中的图片,请按照以下步骤操作,并应用 VBA 代码。
1. 在邮件列表中,请按住 Ctrl 或 Shift 键选择需要打印附件的多封邮件。
2. 同时按下 Alt+F11 键,打开 Microsoft Visual Basic for Applications 窗口。
3. 在 Microsoft Visual Basic for Applications 窗口中,点击工具> 引用。然后勾选 Microsoft Scripting Runtime 选项,如下图所示。完成后,点击确定。

4. 点击插入> 模块,然后将以下 VBA 代码粘贴到新建的模块窗口中。
VBA:批量打印多封 Outlook 邮件中的所有附件
Sub PrintAllAttachmentsInMultipleMails()
'Update by ExtendOffice 2022/08/05
Dim xShellApp As Object
Dim xFSO As Scripting.FileSystemObject
Dim xItem As Object
Dim xTempFldPath, xFilePath As String
Dim xSelItems As Outlook.Selection
Dim xMailItem As Outlook.MailItem
Dim xAttachments As Outlook.Attachments
Dim xAttachment As Outlook.Attachment
Dim xFile As File
On Error Resume Next
Set xFSO = New Scripting.FileSystemObject
xTempFldPath = xFSO.GetSpecialFolder(2).Path & "\Attachments " & Format(Now, "yyyymmddhhmmss") 'xFSO.GetSpecialFolder(2) For saving temporary files
If xFSO.FolderExists(xTemfldpath) = False Then 'create temporary folder
xFSO.CreateFolder (xTempFldPath)
End If
Set xSelItems = Outlook.ActiveExplorer.Selection
Set xShellApp = CreateObject("Shell.Application")
For Each xItem In xSelItems
If xItem.Class = OlObjectClass.olMail Then
Set xMailItem = xItem
Set xAttachments = xMailItem.Attachments
For Each xAttachment In xAttachments
If IsEmbeddedAttachment(xAttachment) = False Then
xFilePath = xTempFldPath & "\" & xAttachment.FileName
xAttachment.SaveAsFile (xFilePath)
Debug.Print xFilePath
End If
Next
End If
Next
For Each xFile In xFSO.GetFolder(xTempFldPath).Files
VBA.DoEvents
Call xShellApp.ShellExecute(xFile.Path, "", "", "print", 0)
Next
Set xSelItems = Nothing
Set xShellApp = Nothing
Set xFSO = Nothing
End Sub
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 5. 按下 F5 键或点击运行按钮即可运行此 VBA 代码。现在,选中邮件中的所有附件都会被打印出来。
注意:
- 每添加一张图片,系统都会弹出确认打印的对话框;而其他类型的文件则会直接打印,无需确认。
- 邮件正文中的图片无法打印。
- 如果您遇到此项目中的宏已被禁用错误,请参考本教程:如何在 Outlook 中启用和禁用宏?
演示:在 Outlook 邮件中打印单个或所有附件
最佳办公效率工具
体验全新 Kutools for Outlook,畅享 100+ 强大功能!立即点击下载,不容错过!
🤖KUTOOLS AI:采用先进 AI 技术,轻松处理邮件,涵盖回复、摘要、优化、扩展、翻译及撰写等功能。
📧 邮件自动化:自动答复(支持 POP 和 IMAP)/定时发送邮件/发送邮件时按规则自动抄送密送/自动转发(高级规则)/自动添加称呼/自动将多收件人邮件拆分为单独信息……
📨 邮件管理:撤回邮件/按主题等条件拦截诈骗邮件/删除重复邮件/高级搜索/整合文件夹……
📁 附件增强:批量保存/批量分离/批量压缩/自动保存/自动拆离/自动压缩……
🌟 界面魔法:😊更多美观时尚表情/重要邮件到达时提醒您/最小化 Outlook 而不是直接关闭……
👍 一键精彩功能:带附件全部答复/反钓鱼邮件/🕘显示发送者当前时间时区……
👩🏼🤝👩🏻 联系人与日历:批量从选定邮件中提取添加联系人/将联系人组拆分为个人组/移除生日提醒……
在您的首选语言中畅享 Kutools —— 支持英语、西班牙语、德语、法语、中文等 40 多种语言!
一键解锁 Kutools for Outlook,告别等待,立即下载,让效率倍增!


🚀 一键下载 — 即可获取全部 Office 加载项
强烈推荐:Kutools for Office(5 合 1)
一键下载五个安装包,即可同时获得 Kutools for Excel、Outlook、Word、PowerPoint 和 Office Tab Pro。立即点击下载!
- ✅ 一键便捷:只需一次操作,即可下载全部五个安装包。
- 🚀 轻松应对各类 Office 任务:随时按需安装所需插件,助您高效办公,不容错过!
- 🧰 包含:Kutools for Excel / Kutools for Outlook / Kutools for Word / Office Tab Pro / Kutools for PowerPoint