If you would like to print out all the attachments in multiple selected emails in bulk, you can utilize the method introduced in this article. It is using a piece of VBA code to achieve it in quick time.
As you can see, when you select a single attachment, there is a direct “Quick Print” feature available in the “Attachments” ribbon. However, when you select over one attachment, the “Quick Print” button will be disabled, not to mention to print all attachments in many selected emails. Therefore, provided that you want to batch print all attachments in several mails in one go, you have to seek other ways, such as any third party tools or VBA. Focused on this need, here we will expose a piece of VBA code to you, which can help you get it simply via one click.

Batch Print All Attachments in Multiple Emails
- At the very outset, launch your Outlook application.
- Then in the main window, press “Alt + F11” key buttons to access VBA editor.
- In the subsequent “Microsoft Visual Basic for Applications” window, open an empty module.
- Next copy the following VBA codes into such a module.
Sub BatchPrintAllAttachmentsinMultipleEmails()
Dim objFileSystem As Object
Dim strTempFolder As String
Dim objSelection As Outlook.Selection
Dim objItem As Object
Dim objMail As Outlook.MailItem
Dim objAttachments As Outlook.attachments
Dim objAttachment As Outlook.Attachment
Dim objShell As Object
Dim objTempFolder As Object
Dim objTempFolderItem As Object
Dim strFilePath As String
Set objFileSystem = CreateObject("Scripting.FileSystemObject")
strTempFolder = objFileSystem.GetSpecialFolder(2).Path & "\Temp for Attachments " & Format(Now, "YYYY-MM-DD_hh-mm-ss")
'Create a new temp folder
MkDir (strTempFolder)
Set objSelection = Outlook.Application.ActiveExplorer.Selection
For Each objItem In objSelection
If TypeOf objItem Is MailItem Then
Set objMail = objItem
Set objAttachments = objMail.attachments
'Save all the attachments in the temp folder
For Each objAttachment In objAttachments
strFilePath = strTempFolder & "\" & objAttachment.FileName
objAttachment.SaveAsFile (strFilePath)
'Print all the files in the temp folder
Set objShell = CreateObject("Shell.Application")
Set objTempFolder = objShell.NameSpace(0)
Set objTempFolderItem = objTempFolder.ParseName(strFilePath)
objTempFolderItem.InvokeVerbEx ("print")
Next objAttachment
End If
Next
End Sub
- Subsequently, you can add the new macro to the Quick Access Toolbar.
- After that, you ought to set your Outlook macro security level to low.
- Eventually you can have a try.
- Firstly, in the mail list, select several emails whose attachments you want to print.
- Then click on the new macro button in Quick Access Toolbar.
- Next, all the attachments in the selected emails will be printed out.
Beware of Viruses Hidden in Macros
If you’ve configured your Outlook macro security level to low, you have to spend a lot of efforts blocking potential viruses in malicious macros. It’s because viruses can destroy your Outlook data in one go. Once your Outlook data is corrupt, you’ll try your best to recover Outlook data by all means, such as recurring to a potent tool like DataNumen Outlook Repair.
Author Introduction:
Shirley Zhang is a data recovery expert in DataNumen, Inc., which is the world leader in data recovery technologies, including corrupt sql and outlook repair software products. For more information visit www.datanumen.com
