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

How to print all attachments in one/multiple emails in Outlook?

As you know, it will only print the email content such as header, body when you click the File > Print in Microsoft Outlook, but not print the attachments. Here we will show you how to print all attachments in a selected email at ease in Microsoft Outlook.


Print all attachments in one email message one by one

Microsoft Outlook provides us with Quick Print feature, which can help you print attachments in an email message one by one.

1. Select the email message whose attachments you will print later.

2. Click one attachment in this email.

3. Click the Quick Print button in the Actions group on the Attachments tab.

Note: the Attachment Tools won’t be activated until you click attachments in emails.

4. An Opening Mail Attachment dialog comes out, and please click the Open button.

Please note that this step will open the selected attachment, and print this selected attachment at the same time.

To print other attachments in this email, please repeat the Step 2 to Step 4.

Quickly save/export all attachments from multiple emails in Outlook

Normally we can save attachments from one email with activating the Attachment Tools and applying the Save All Attachments feature in Outlook. But, what if saving attachments from multiple emails, or from the whole mail folder in Outlook? Try Kutools for Outlook's Save All (Attachments) feature.


save attachments in multiple emails kto9

Batch print all attachments in one email message

If there are many attachments in the one email message, it will be time-consuming to print them one by one. And the following method will walk you through batch printing all attachments in a selected email message easily.

1. Select the email message whose attachments you will print later.

2. In Outlook 2010 or later versions, please click the File > Print > Print Options. See the following screenshot:

3. In the Print dialog box, please check the Print attached files. Attachments will print to the default printer only option in the Print options section.

4. Click the Print button.

5. In the popping out Opening Mail Attachment dialog box, please click the Open button to go ahead. (Note: This dialog box will pop out for each attachment separately.)

Now all attachments in this selected email message will be printed at once.


Batch print all attachments and pictures in multiple selected emails

To print all attachments in multiple emails as well as all the pictures in the message body in Outlook, please follow the below steps to apply a VBA code.

1. In the mailing list, please hold Ctrl or Shift keys to select multiple emails whose attachments you will print.

2. Press Alt + F11 keys together to open the Microsoft Visual Basic for Applications window.

3. In the Microsoft Visual Basic for Applications window, click Tools > References. And then check the Microsoft Scripting Runtime option as shown below. Once finished, click OK.

4. Click Insert > Module, and then paste below VBA code into the new module window.

VBA: Print all attachments in multiple Outlook emails

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. Press F5 key or click the Run button to run this VBA code. Now you will see that all attachments in the selected emails and the pictures in the meesage body are printed out.

Note:

  • Each image will bring up a pop-up dialog box to ask for you confirmation of printing. While other types of files will be printed directly.
  • If there are images in an email signature, they will bring up pop-up dialog boxes as well.
  • If you get The macros in this project are disabled error, please check this tutorial: How To Enable And Disable Macros In Outlook?

Batch print all attachments in multiple selected emails except pictures in the body

To only print attachments in multiple emails but the pictures in the message body in Outlook, please follow the below steps to apply a VBA code.

1. In the mailing list, please hold Ctrl or Shift keys to select multiple emails whose attachments you will print.

2. Press Alt + F11 keys together to open the Microsoft Visual Basic for Applications window.

3. In the Microsoft Visual Basic for Applications window, click Tools > References. And then check the Microsoft Scripting Runtime option as shown below. Once finished, click OK.

4. Click Insert > Module, and then paste below VBA code into the new module window.

VBA: Print all attachments in multiple Outlook emails

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. Press F5 key or click the Run button to run this VBA code. Now you will see that all the attachments in the selected emails are printed out.

Note:

  • Each attached image will bring up a pop-up dialog box to ask for you confirmation of printing. While other types of files will be printed directly.
  • Images in the message body will not be printed.
  • If you get The macros in this project are disabled error, please check this tutorial: How To Enable And Disable Macros In Outlook?

 


Demo: print one or all attachments in an Outlook email


Tip: In this Video, Kutools tab is added by Kutools for Outlook. If you need it, please click here to have a 60-day free trial without limitation!


Kutools for Outlook - Brings 100 Advanced Features to Outlook, and Make Work Much Easier!

  • Auto CC/BCC by rules when sending email; Auto Forward Multiple Emails by custom; Auto Reply without exchange server, and more automatic features...
  • BCC Warning - show message when you try to reply all if your mail address is in the BCC list; Remind When Missing Attachments, and more remind features...
  • Reply (All) With All Attachments in the mail conversation; Reply Many Emails in seconds; Auto Add Greeting when reply; Add Date into subject...
  • Attachment Tools: Manage All Attachments in All Mails, Auto Detach, Compress All, Rename All, Save All... Quick Report, Count Selected Mails...
  • Powerful Junk Emails by custom; Remove Duplicate Mails and Contacts... Enable you to do smarter, faster and better in Outlook.
shot kutools outlook kutools tab 1180x121
shot kutools outlook kutools plus tab 1180x121
 
Comments (23)
Rated 5 out of 5 · 1 ratings
This comment was minimized by the moderator on the site
This is very useful, but doesn't help me with Office 365??
This comment was minimized by the moderator on the site
I could figure this part out for myself - what I'm trying to figure out is why, despite doing that, attachments wouldn't print. An error message pops up for each attachment asking if I want to "open" or "save". Choosing either option produces exactly those results - in other words, still no print, just an open or save. I have 20 attachments from 4 emails. I really don't want to have to open 80 documents just to be able to print them. There is clearly some "save me from myself" security setting that needs to be obliterated so that I can use my own computer and the operating system I bought and paid for. THAT'S what I need to know.
This comment was minimized by the moderator on the site
Double click on email to "pop-out" by itself. Right click on one of the attachments and click "select all", then "quick print".
This comment was minimized by the moderator on the site
Agree with Leah, this does not work. It just prints out the main body of the email and the first attachment, not all of them. Need instructions on how to print them all using "select all" options shown above.
This comment was minimized by the moderator on the site
if you want to print all attachments together in 1 email here's what you do. first make a folder on your desktop....I named mine "print". go to the email with the attachments....highlight all of the attachments, right click, save all attachments to the print folder. Open the print folder.....highlight all of them.....right click.....print.



now if only I could figure out how to print all the attachments in 200 emails without opening each one and printing it.
This comment was minimized by the moderator on the site
Kutools for Outlook's Detach All (Attachments) feature can help you download all attachments from multiple emails with several clicks! https://www.extendoffice.com/product/kutools-for-outlook/outlook-detach-attachments.html
This comment was minimized by the moderator on the site
if a pdf has the same name the macro prints just one pdf, how can i change the code in order to modify the pdf name?
This comment was minimized by the moderator on the site
the VBA code gives syntax is error
This comment was minimized by the moderator on the site
on line 9 , removing "On Error Resume Next" worked for me.
This comment was minimized by the moderator on the site
yes this just worked for me as well. Thank you!
This comment was minimized by the moderator on the site
Thank you 
This comment was minimized by the moderator on the site
Hi, I have been using this shortcut for a few weeks now, printing all attachments from multiple emails at once, and I have recently been having to remove line 9 as Nilanka said, which has been working, but this no longer works. Im getting the warning box saying the macros in this project are disabled.....and so on... if someone has a solution to make this work as it has been prior to now, please lmk, as i am selecting about 60 emails all containing attachments to print. Thanks
This comment was minimized by the moderator on the site
This comment was minimized by the moderator on the site
Hi everyone, we updated the VBA code in the tutorial on 2022/08/03. If you still need to print all attachments, please check the new code. 😊
This comment was minimized by the moderator on the site
Hi, this worked fine for me yesterday but now it is saying 'the macros in this project are disabled' Any advice how to enable them? 
This comment was minimized by the moderator on the site
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.
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
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
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
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
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.
There are no comments posted here yet
Leave your comments
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations

Follow Us

Copyright © 2009 - www.extendoffice.com. | All rights reserved. Powered by ExtendOffice. | Sitemap
Microsoft and the Office logo are trademarks or registered trademarks of Microsoft Corporation in the United States and/or other countries.
Protected by Sectigo SSL