Note: The other languages of the website are Google-translated. Back to English

如何在Outlook中以一封/多封电子邮件打印所有附件?

如您所知,当您单击电子邮件时,它将仅打印电子邮件内容,例如标题,正文 文件 > 打印 在Microsoft Outlook中,但不打印附件。 在这里,我们将向您展示如何在Microsoft Outlook中轻松打印所选电子邮件中的所有附件。


一张一张打印一封电子邮件中的所有附件

Microsoft Outlook为我们提供了 快速打印 功能,可以帮助您一一打印电子邮件中的附件。

1。 选择您稍后将打印附件的电子邮件。

2。 单击此电子邮件中的一个附件。

3。 点击 快速打印 按钮在 查看订单 组上 附件 标签。

注意: 附件工具 在您单击电子邮件中的附件之前,不会激活它。

4. 出现打开邮件附件对话框,请单击 可选 按钮。

请注意,此步骤将打开选定的附件,并同时打印此选定的附件。

要打印此电子邮件中的其他附件,请重复步骤2至步骤4。

在Outlook中快速保存/导出多封电子邮件中的所有附件

通常,我们可以通过激活以下电子邮件来保存一封电子邮件中的附件 附件工具 并应用 保存所有附件 Outlook中的功能。 但是,如果从多封电子邮件或Outlook中的整个邮件文件夹中保存附件怎么办? 尝试使用Kutools for Outlook的 全部保存 (附件)功能。


将附件保存在多封电子邮件中kto9

批量打印一封电子邮件中的所有附件

如果一封电子邮件中有很多附件,则要逐个打印它们会很耗时。 以下方法将引导您轻松批量打印所选电子邮件中的所有附件。

1。 选择您稍后将打印附件的电子邮件。

2。 在Outlook 2010或更高版本中,请单击 文件 > 打印 > 列印选项。 请参见以下屏幕截图:

3. 在打印对话框中,请检查 打印附件。 附件将仅打印到默认打印机 在选项 打印选项 部分。

4。 点击 打印 按钮。

5。 在弹出的打开邮件附件对话框中,请单击 可选 按钮继续。 (备注:此对话框将分别为每个附件弹出。)

现在将立即打印此选定电子邮件中的所有附件。


批量打印多个选定电子邮件中的所有附件和图片

要在 Outlook 中打印多封电子邮件中的所有附件以及邮件正文中的所有图片,请按照以下步骤应用 VBA 代码。

1。 在邮件列表中,请按住 按Ctrl or 转移 键选择要打印附件的多封电子邮件。

2。 按 其他 + F11 键一起打开Microsoft Visual Basic for Applications窗口。

3。 在“ Microsoft Visual Basic for Applications”窗口中,单击“ 鑫安工具 > 参考资料。 然后检查 Microsoft脚本运行时 选项如下图。 完成后,单击 OK.

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 中启用和禁用宏?

批量打印多个选定电子邮件中的所有附件,正文中的图片除外

要在 Outlook 中仅打印多封电子邮件中的附件,而在邮件正文中打印图片,请按照以下步骤应用 VBA 代码。

1。 在邮件列表中,请按住 按Ctrl or 转移 键选择要打印附件的多封电子邮件。

2。 按 其他 + F11 键一起打开Microsoft Visual Basic for Applications窗口。

3。 在“ Microsoft Visual Basic for Applications”窗口中,单击“ 鑫安工具 > 参考资料。 然后检查 Microsoft脚本运行时 选项如下图。 完成后,单击 OK.

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 展望。 如果需要,请单击 此处 免费试用60天!


Kutools for Outlook-为Outlook带来100个高级功能,并使工作更加轻松!

  • 自动CC / BCC 根据规则发送电子邮件; 自动转发 自定义多封电子邮件; 自动回复 没有交换服务器,还有更多自动功能...
  • BCC警告 -当您尝试全部答复时显示消息 如果您的邮件地址在“密件抄送”列表中; 缺少附件时提醒,还有更多提醒功能...
  • 在邮件对话中回复(全部)带有所有附件; 回复许多电子邮件 很快; 自动添加问候语 回复时将日期添加到主题中...
  • 附件工具:管理所有邮件中的所有附件, 自动分离, 全部压缩,全部重命名,全部保存...快速报告, 计算选定的邮件...
  • 强大的垃圾邮件 习俗 删除重复的邮件和联系人... 使您能够在Outlook中做得更聪明,更快和更好。
拍摄kutools前景kutools选项卡1180x121
拍摄kutools前景kutools加标签1180x121
 
按评论排序
注释 (23)
5中的5评分 · 1评级
该评论由网站上的主持人最小化
这非常有用,但对 Office 365 没有帮助??
该评论由网站上的主持人最小化
我可以自己弄清楚这部分 - 我想弄清楚为什么尽管这样做,但附件不会打印。 每个附件都会弹出一条错误消息,询问我是要“打开”还是“保存”。 选择任何一个选项都会产生这些结果 - 换句话说,仍然没有打印,只是打开或保存。 我有来自 20 封电子邮件的 4 个附件。 我真的不想为了能够打印它们而打开 80 个文档。 显然有一些“拯救我自己”的安全设置需要被删除,以便我可以使用我自己的计算机和我购买并支付的操作系统。 这就是我需要知道的。
该评论由网站上的主持人最小化
双击电子邮件以自行“弹出”。 右键单击其中一个附件,然后单击“全选”,然后单击“快速打印”。
该评论由网站上的主持人最小化
同意莉亚,这行不通。 它只是打印出电子邮件的主体和第一个附件,而不是全部。 需要有关如何使用上面显示的“全选”选项打印它们的说明。
该评论由网站上的主持人最小化
如果您想在 1 封电子邮件中一起打印所有附件,请执行以下操作。 首先在您的桌面上创建一个文件夹......我将我的命名为“打印”。 转到带有附件的电子邮件....突出显示所有附件,右键单击,将所有附件保存到打印文件夹。 打开打印文件夹......突出显示所有这些......右键单击......打印。



现在,如果我能弄清楚如何打印 200 封电子邮件中的所有附件,而无需打开每一封并打印它。
该评论由网站上的主持人最小化
Kutools for Outlook 的全部分离(附件)功能可以帮助您单击几下从多封电子邮件中下载所有附件! https://www.extendoffice.com/product/kutools-for-outlook/outlook-detach-attachments.html
该评论由网站上的主持人最小化
如果 pdf 具有相同的名称,宏只打印一个 pdf,我如何更改代码以修改 pdf 名称?
该评论由网站上的主持人最小化
VBA 代码给出的语法是错误的
该评论由网站上的主持人最小化
在第 9 行,删除“On Error Resume Next”对我有用。
该评论由网站上的主持人最小化
是的,这也对我有用。 谢谢!
该评论由网站上的主持人最小化
谢谢 
该评论由网站上的主持人最小化
嗨,我已经使用这个快捷方式几个星期了,一次打印多封电子邮件中的所有附件,我最近不得不像 Nilanka 所说的那样删除第 9 行,这一直有效,但这不再有效。 我收到警告框说这个项目中的宏被禁用......等等......如果有人有一个解决方案可以让这个工作像以前一样,请lmk,因为我选择大约60所有包含要打印的附件的电子邮件。 谢谢
该评论由网站上的主持人最小化
大家好,我们在 2022/08/03 更新了教程中的 VBA 代码。 如果您仍需要打印所有附件,请检查新代码。 😊
该评论由网站上的主持人最小化
嗨,昨天这对我来说很好,但现在它说“这个项目中的宏被禁用”有什么建议如何启用它们吗? 
该评论由网站上的主持人最小化
Vielen, vielen Dank dafür! Hat uns enorm viel Arbeit erspart.Auch ich musste - wie bereits in den Kommentaren geschrieben - die neunte Zeile "Dim xAttachment As Outlook.Attachment On Error Resume Next" entfernen, dann lief der Code einfandfrei durch。
该评论由网站上的主持人最小化
你好, ich möchte nur den Anhang der Mails von der angegebenen Adresse senden, wie kann ich das machen, danke
该评论由网站上的主持人最小化
我正在使用 Microsoft 365,这在删除第 9 行后有效。谢谢! 这为我节省了一些时间。
5中的5评分
该评论由网站上的主持人最小化
亲爱的,

我已经尝试过 VBA 并且代码运行了,但是屏幕上打开了许多弹出窗口以打印来自邮件签名的图像(显然这被认为是附件)。 任何人都知道如何解决它?

S.
该评论由网站上的主持人最小化
您好,

抱歉,打印图像会弹出弹出窗口。 您必须确认每一个才能下载所有图像。 如果您不需要打印图像,请单击“取消”。

阿曼达
该评论由网站上的主持人最小化
如果您不想在邮件正文中打印图片,请使用以下代码:
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
该评论由网站上的主持人最小化
亲爱的阿曼达,

谢谢你的代码。 有效!

S.
这里还没有评论
留下你的意见
以访客身份发帖
×
评价此帖子:
0   产品特性
建议地点

关注我们

版权所有 © 2009 - extendoffice.com。 | 版权所有。 供电 ExtendOffice。 | 网站地图
Microsoft和Office徽标是Microsoft Corporation在美国和/或其他国家的商标或注册商标。
受Sectigo SSL保护