跳到主要内容

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

作者:凯莉 最后修改时间:2022-08-05

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


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

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

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

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

3。 点击 快速打印 按钮在 行动 组上 附件 标签。

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

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

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

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

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

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


将附件保存在多封电子邮件中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 加 此视频中的标签,由 Kutools for Outlook。现在,包括 AI 功能在内的大多数功能都是免费的!专业版功能提供 30 天无限制试用!


最佳办公生产力工具

最新消息:Kutools for Outlook 发布 免费版本!

体验全新的 Kutools for Outlook 免费版本拥有 70 多项令人难以置信的功能,您可以永久使用! 点击立即下载!

🤖 Kutools人工智能 : 具有人工智能魔力的即时专业电子邮件——一键天才回复、完美语气、多语言掌握。轻松改变电子邮件! ...

📧 电子邮件自动化: 自动回复(适用于 POP 和 IMAP)  /  安排发送电子邮件  /  发送电子邮件时按规则自动抄送/密件抄送  /  自动转发(高级规则)   /  自动添加问候语   /  自动将多收件人电子邮件拆分为单独的消息 ...

📨 电子邮件管理: 撤回电子邮件  /  按主题和其他人阻止诈骗电子邮件  /  删除重复的电子邮件  /  高级搜索  /  合并文件夹 ...

📁 附件专业版批量保存  /  批量分离  /  批量压缩  /  自动保存   /  自动分离  /  自动压缩 ...

🌟 界面魔法: 😊更多又漂亮又酷的表情符号   /  收到重要邮件时提醒您  /  最小化 Outlook 而不是关闭 ...

👍 一键奇迹: 使用传入附件回复全部  /   反网络钓鱼电子邮件  /  🕘显示发件人的时区 ...

👩🏼‍🤝‍👩🏻 通讯录和日历: 从选定的电子邮件中批量添加联系人  /  将联系人组拆分为各个组  /  删除生日提醒 ...

只需单击一下即可立即解锁 Kutools for Outlook -永久免费. 别等了, 立即下载并提高您的效率!

kutools for outlook 功能1 kutools for outlook 功能2
 

 

 

Comments (24)
Rated 5 out of 5 · 1 ratings
This comment was minimized by the moderator on the site
Is it possible to specify a network printer instead of always printing with the standard printer?
This comment was minimized by the moderator on the site
Dear all,

I had tried the VBA and the code runs but many popups are opening on screen to print images from the mail signature (apparently this is considered an attachment). Anyone knows how to solve it?

S.
This comment was minimized by the moderator on the site
If you don't want to print pictures in the body of a message, please use the code below:
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
This comment was minimized by the moderator on the site
Dear Amanda,

Thank you for the code. It worked!

S.
This comment was minimized by the moderator on the site
Hi there,

Sorry that printing images will bring up popups. You will have to confirm each to download all the images. If you don't need to print images, please click Cancel.

Amanda
This comment was minimized by the moderator on the site
I am using Microsoft 365 and this worked after deleting line 9. Thanks! This has saved a bit of time for me.
Rated 5 out of 5
This comment was minimized by the moderator on the site
hallo, ich möchte nur den Anhang der Mails von der angegebenen Adresse senden, wie kann ich das machen, danke
This comment was minimized by the moderator on the site
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.
There are no comments posted here yet
Load More
Leave your comments
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations