Печать вложений, полученных в сообщениях электронной почты
Чтобы напечатать вложение, не обязательно открывать файл. Вложения можно печатать из открытого окна сообщения или из области чтения. Если сообщение содержит несколько вложений, можно распечатать одно из них или все.
Печать только вложения
Чтобы распечатать вложение из открытого сообщения или из области чтения, выполните следующие действия.
- Откройте сообщение электронной почты.
- Щелкните значок вложения под заголовком сообщения и нажмите кнопку Быстрая печать. Вложение отправляется непосредственно на принтер в зависимости от параметров принтера по умолчанию.
Печать вложения с сообщением
Чтобы печатать вложения при печати сообщения, сначала убедитесь, что выбран параметр Печать вложенных файлов , как описано ниже. Этот параметр остается включенным до тех пор, пока не будет снят соответствующий флажок.
- В списке сообщений выберите сообщение с вложением, которое нужно распечатать.
- Откройте вкладку Файл.
- Нажмите кнопку Печать.
- В разделе Принтер нажмите кнопку Параметры печати.
- В диалоговом окне Печать в разделе Параметры печати установите флажок печатать вложения.
- Вложения распечатываются только на принтере по умолчанию. Например, если принтером по умолчанию является принтер А, а для печати сообщения с вложением используется принтер Б, сообщение будет распечатано на принтере Б, а вложение — на принтере А. Если нужно отправить вложение на определенный принтер, дважды щелкните его, чтобы открыть, и в приложении, открывающем вложение, выберите команду печати.
- Некоторые вложенные файлы необходимо открыть, прежде чем печатать. Перед печатью файлов таких типов Outlook предложит вам открыть или сохранить вложение. Выберите Открыть. После печати потребуется вручную закрыть файл вложения.
Как распечатать электронную почту из Outlook или Outlook.com
Каждый пользователь Microsoft Office должен знать, как печатать электронные письма из Outlook и Outlook.com. Настольная версия также позволяет распечатывать вложения электронной почты прямо из Outlook.
Инструкции в этой статье относятся к Outlook 2019, 2016, 2013, Outlook для Microsoft 365 и Outlook.com.
Как распечатать электронное письмо из Outlook Online
Outlook в Интернете предоставляет удобную для печати версию каждого сообщения без рекламы и визуального беспорядка. Чтобы отправить сообщение на ваш принтер:
- Откройте сообщение электронной почты, которое хотите распечатать, затем выберите Больше команд (⋯) в верхней части Outlook.com.
- Выбрать печать.
:max_bytes(150000):strip_icc()/002_print-emails-outlook-mail-1164552-89d2ecd1f8c1419db36f7144031bba6f.jpg)
- Сообщение откроется в новом окне и отформатировано для печати. Выбрать печать.
:max_bytes(150000):strip_icc()/003_print-emails-outlook-mail-1164552-34132145d7894415ae90d8f6bf14a1e4.jpg)
- в принтер в диалоговом окне выберите страницы для печати, макет или ориентацию и количество копий, затем выберите печать.
:max_bytes(150000):strip_icc()/004_print-emails-outlook-mail-1164552-03c251a6e80646a7b7efd55ab139126a.jpg)
Вы не можете распечатать все вложения электронной почты непосредственно из Outlook.com. Вы должны сначала загрузить каждое вложение и распечатать их отдельно.
Как печатать из приложения Outlook
Выполните следующие действия, чтобы распечатать электронное письмо с помощью почтового клиента Outlook:
- Откройте письмо, которое хотите распечатать, затем перейдите в Отправьте >печать. Или используйте ярлык Ctrl + P в Windows или ⌘ + P на Mac, чтобы вызвать печать меню.
- Выбрать печать чтобы сразу распечатать электронное письмо, или выберите Параметры печати.
:max_bytes(150000):strip_icc()/005_print-emails-outlook-mail-1164552-d76b93c5dd4b4aea9f5628abf7e9b4d1.jpg)
- Выберите количество страниц или копий для печати, измените настройки страницы, выберите принтер, затем выберите печать.
Чтобы распечатать вложения, убедитесь, что Распечатать прикрепленные файлы выбрано. Вложения печатаются на принтер по умолчанию.
Альтернативные способы печати вложений в Outlook
Есть два дополнительных способа распечатать вложения в настольном приложении Outlook:
- Откройте письмо и щелкните правой кнопкой мыши значок вложения, затем выберите Быстрая печать в раскрывающемся меню.
:max_bytes(150000):strip_icc()/007_print-emails-outlook-mail-1164552-9f473f16bf2b4fa2aba5eefefc91a410.jpg)
- Или выберите вложение, затем выберите Вложения >Быстрая печать на ленте. Вложение будет распечатано на принтере по умолчанию.
:max_bytes(150000):strip_icc()/008_print-emails-outlook-mail-1164552-109d84feadbc49a691141fc70b952c9b.jpg)
Categories Wiki
Свежие записи
- Как активировать GodMode в Windows 10, 8 и 7
- Как отключить Защитник Windows
- Как копировать компакт-диски с помощью проигрывателя Windows Media
- Как открывать, редактировать и конвертировать файлы MDT
- Как синхронизировать Wii Remote
покупка
Как распечатать все вложения в одном / нескольких письмах в Outlook?
Как вы знаете, он будет печатать только содержимое электронного письма, такое как заголовок, тело, когда вы нажимаете Файл > Печать / PDF в Microsoft Outlook, но не распечатывать вложения. Здесь мы покажем вам, как легко распечатать все вложения в выбранном электронном письме в Microsoft Outlook.
- Печатать все вложения в одном сообщении электронной почты по одному
- Пакетная печать всех вложений в одном сообщении электронной почты
- Пакетная печать всех вложений и изображений в нескольких выбранных электронных письмах
- Пакетная печать всех вложений в нескольких выбранных электронных письмах, кроме изображений в теле
Печатать все вложения в одном сообщении электронной почты по одному
Microsoft Outlook предоставляет нам Быстрая печать функция, которая может помочь вам распечатать вложения в сообщении электронной почты по одному.
1. Выберите сообщение электронной почты, вложения которого вы распечатаете позже.

2. Щелкните одно вложение в этом письме.

3, Нажмите Быстрая печать в Действия группы на Вложения меню.
Обратите внимание Инструменты для вложения не будет активирован, пока вы не нажмете на вложения в письмах.

4. Появится диалоговое окно «Открытие почтового вложения», нажмите кнопку Откройте кнопку.
Обратите внимание, что этот шаг откроет выбранное вложение и одновременно распечатает это выбранное вложение.
Чтобы распечатать другие вложения в этом электронном письме, повторите шаги 2–4.
Быстро сохранять / экспортировать все вложения из нескольких писем в Outlook
Обычно мы можем сохранить вложения из одного письма, активировав Инструменты для вложения и применение Сохранить все вложения функция в Outlook. Но что, если сохранить вложения из нескольких электронных писем или из всей почтовой папки в Outlook? Пытаться Kutools for Outlook’s Сохраните все (Вложения) особенность.
Нажмите, чтобы получить 60-дневную бесплатную пробную версию без ограничений!
Пакетная печать всех вложений в одном сообщении электронной почты
Если в одном сообщении электронной почты много вложений, их распечатка по одному займет много времени. А следующий метод поможет вам легко выполнить пакетную печать всех вложений в выбранном сообщении электронной почты.
1. Выберите сообщение электронной почты, вложения которого вы распечатаете позже.

2. В Outlook 2010 или более поздних версиях щелкните значок Файл > Печать / PDF > Параметры печати. См. Следующий снимок экрана:

3. В диалоговом окне «Печать» установите флажок Распечатать прикрепленные файлы. Вложения будут печататься только на принтере по умолчанию. вариант в Параметры печати .
4, Нажмите Печать / PDF кнопку.

5. В появившемся диалоговом окне «Открытие почтового вложения» щелкните значок Откройте кнопку, чтобы продолжить. (Внимание: Это диалоговое окно будет появляться для каждого вложения отдельно.)
Теперь все вложения в этом выбранном сообщении электронной почты будут распечатаны сразу.
Пакетная печать всех вложений и изображений в нескольких выбранных электронных письмах
Чтобы распечатать все вложения в нескольких электронных письмах, а также все изображения в теле сообщения в Outlook, выполните следующие действия, чтобы применить код VBA.
1. В списке рассылки удерживайте Ctrl or Shift клавиши для выбора нескольких писем, вложения которых вы будете распечатывать.
2, нажмите другой + F11 вместе, чтобы открыть окно Microsoft Visual Basic для приложений.

3. В окне Microsoft Visual Basic для приложений щелкните Tools > Рекомендации. А затем проверьте Среда выполнения сценариев 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 ключ или щелкните Run кнопку для запуска этого кода VBA. Теперь вы увидите, что все вложения в выбранных электронных письмах и изображения в теле сообщения распечатываются.
Примечание:
- Каждое изображение вызывает всплывающее диалоговое окно с запросом на подтверждение печати. В то время как другие типы файлов будут напечатаны напрямую.
- Если в подписи электронной почты есть изображения, они также будут вызывать всплывающие диалоговые окна.
- Если вы Макросы в этом проекте отключены ошибка, пожалуйста, проверьте этот учебник: Как включить и отключить макросы в Outlook?
Пакетная печать всех вложений в нескольких выбранных электронных письмах, кроме изображений в теле
Чтобы распечатать только вложения в нескольких электронных письмах, но изображения в теле сообщения в Outlook, выполните следующие действия, чтобы применить код VBA.
1. В списке рассылки удерживайте Ctrl or Shift клавиши для выбора нескольких писем, вложения которых вы будете распечатывать.
2, нажмите другой + F11 вместе, чтобы открыть окно Microsoft Visual Basic для приложений.

3. В окне Microsoft Visual Basic для приложений щелкните Tools > Рекомендации. А затем проверьте Среда выполнения сценариев 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 ключ или щелкните Run кнопку для запуска этого кода VBA. Теперь вы увидите, что все вложения в выбранных электронных письмах распечатаны.
Примечание:
- Каждое прикрепленное изображение вызывает всплывающее диалоговое окно с запросом на подтверждение печати. В то время как другие типы файлов будут напечатаны напрямую.
- Изображения в теле сообщения не будут распечатаны.
- Если вы Макросы в этом проекте отключены ошибка, пожалуйста, проверьте этот учебник: Как включить и отключить макросы в Outlook?
Демонстрация: распечатайте одно или все вложения в электронном письме Outlook
Функции: В этом видео, Кутулс вкладка добавлена Kutools for Outlook . Если вам это нужно, нажмите здесь получить 60-дневную бесплатную пробную версию без ограничений!
Лучшие инструменты для офисной работы
Kutools for Outlook — Более 100 мощных функций для улучшения вашего Outlook
Более Особенности 100 Ждем вашего исследования! Нажмите здесь, чтобы узнать больше.
Open Notes
Макрос автоматической распечатки всех входящих писем Outlook и их вложений
13 сентября 2016, VBA, Konstantin
Мне поступил заказ на разработку макроса для Outlook, который будет сразу после поступления письма, без какого бы то ни было участия, распечатывать само письмо, его вложения (файлы *.doc, *.docx, *.xls, *.xlsx а также *.jpg и *.pdf). А если в письмо вложен архив, то макрос должен его распаковать и распечатать находящиеся внутри документы.
Задача показалась мне интересной и я взялся за неё.
Поискав в сети, я нашел готовое решение, которое позволяло частично выполнить задачу.
Документы печатать было уже можно (должен быть установлен MS Office). Однако оставалось решить ещё несколько проблем:
- При попытке напечатать таким образом изображения появляется окно вывода на печать, где требуется ещё нажать кнопку. Т.е. уже не выполняется условие «без участия пользователя».
- Для печати PDF не получится воспользоваться средствами MS Office.
- Нужно добавить распаковку *.rar и *.zip архивов
Для решения первой проблемы решено было использовать Paint, который установлен практически на любом компьютере с Windows. Вторая проблема решается установкой на компьютер Adob Reader и печатью силами данной программы. А третья проблема легко будет устранена если на компьютере стоит WinRAR.
В итоге получился следующий код:
'С 64-битным Outlook нужно использовать Declare PtrSafe Function Private Declare Function ShellExecute Lib "shell32.dll" Alias _ "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, _ ByVal lpFile As String, ByVal lpParameters As String, _ ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long Private WithEvents Items As Outlook.Items Private Sub Application_Startup() Dim olNameSpace As Outlook.NameSpace Dim Folder As Outlook.MAPIFolder Set olNameSpace = Application.GetNamespace("MAPI") Set Folder = olNameSpace.GetDefaultFolder(olFolderInbox) Set Items = Folder.Items End Sub Private Sub Items_ItemAdd(ByVal Item As Object) If TypeOf Item Is Outlook.MailItem Then PrintAttachments Item End If End Sub 'Печать вложений из письма Private Sub PrintAttachments(olItem As Outlook.MailItem) On Error Resume Next Dim colAtts As Outlook.Attachments Dim olAtt As Outlook.Attachment Dim sFile As String Dim sDirectory As String Dim sFileType As String Dim pa As PropertyAccessor Dim is_attach As Boolean Const PR_ATTACH_CONTENT_ID As String = "http://schemas.microsoft.com/mapi/proptag/0x3712001F" Const PR_ATTACHMENT_HIDDEN As String = "http://schemas.microsoft.com/mapi/proptag/0x7FFE000B" Dim str1() As String Dim str2() As String sDirectory = "C:\Test\" Set colAtts = olItem.Attachments If colAtts.Count Then For Each olAtt In colAtts is_attach = False 'Проверяем не является ли файл элементом оформления письма Set pa = objAtt.PropertyAccessor cid = pa.GetProperty(PR_ATTACH_CONTENT_ID) If Len(cid) > 0 Then If InStr(itm.HTMLBody, cid) Then is_attach = False Else 'Если не существует PR_ATTACHMENT_HIDDEN, то возникнет ошибка 'Просто игнорируем эту ошибку и интерпретируем как False On Error Resume Next If Not pa.GetProperty(PR_ATTACHMENT_HIDDEN) Then is_attach = True End If On Error GoTo 0 End If Else is_attach = True End If 'определение расширения файла str1 = Split(olAtt.FileName, ".") sFileType = "." & LCase(str1(UBound(str1))) Select Case sFileType Case ".xls", ".xlsx", ".doc", ".docx" sFile = sDirectory & "FileForPrint_" & olAtt.Index & sFileType olAtt.SaveAsFile sFile ShellExecute 0, "print", sFile, vbNullString, vbNullString, 0 Case ".pdf" sFile = sDirectory & "FileForPrint_" & olAtt.Index & sFileType olAtt.SaveAsFile sFile 'Прописать путь к AcroRd32.exe Shell "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe /p /h " & sFile Case ".jpg", ".png" sFile = sDirectory & "FileForPrint_" & olAtt.Index & sFileType olAtt.SaveAsFile sFile 'Прописать путь к mspaint.exe Shell "C:\WINDOWS\system32\mspaint.exe " & sFile & " /p" Case ".zip", ".rar" sFile = sDirectory & "FileForPrint_" & olAtt.Index & sFileType sDir = sDirectory & "FileForPrint_" & olAtt.Index If Dir(sDir, vbDirectory) <> "" Then Kill sDir & "\*.*" RmDir sDir End If olAtt.SaveAsFile sFile 'Прописать путь к winrar.exe Shell "C:\Program Files\WinRAR\winrar.exe e " & sFile & " " & sDir & "\" strFileName = Dir(sDir & "\" & "*.*") Do While strFileName <> "" 'До тех пор пока файлы "не закончатся" 'MsgBox strFileName str2 = Split(strFileName, ".") sFileType2 = "." & LCase(str2(UBound(str2))) Select Case sFileType2 Case ".xls", ".xlsx", ".doc", ".docx" ShellExecute 0, "print", sDir & "\" & strFileName, vbNullString, vbNullString, 0 Case ".pdf" 'Прописать путь к AcroRd32.exe Shell "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe /p /h " & sDir & "\" & strFileName Case ".jpg", ".png" sFile = sDirectory & "FileForPrint_" & olAtt.Index & sFileType olAtt.SaveAsFile sFile 'Прописать путь к mspaint.exe Shell "C:\WINDOWS\system32\mspaint.exe " & sDir & "\" & strFileName & " /p" End Select strFileName = Dir 'Следующий файл Loop End Select Next End If End Sub 'Процедура печать текста письма Private Sub PrintMessage(sDir) On Error Resume Next ShellExecute 0, "Print", sDir, vbNullString, "", 1 End Sub Public Sub PrintMessageAndAttach(itm As Outlook.MailItem) Dim objAtt As Outlook.Attachment Dim saveFolder As String 'Нужно создать папку, куда временно будут сохраняться письма и их вложения перед печатью (прописывается без обратного слеша в конце) saveFolder = "C:\\Test" If Dir(saveFolder, vbDirectory) = "" Then MkDir saveFolder End If 'Сообщение, которое всплывает после получения письма 'Для наглядности оно отображает Тему письма, email отправителя, и количество вложений If MsgBox("Вы хотите распечатать входящее письмо и все его вложения?" & Chr(10) & _ "Тема: " & itm.Subject & Chr(10) & _ "Отправитель: " & itm.SenderEmailAddress & Chr(10) & _ "Вложения: " & itm.Attachments.Count, vbYesNo, "Печать письма и вложений") = vbYes Then 'Сохранение письма и его печать itm.SaveAs (saveFolder & "\Message_For_Print.msg") PrintMessage saveFolder & "\Message_For_Print.msg" 'Печать вложений PrintAttachments itm End If End Sub
‘С 64-битным Outlook нужно использовать Declare PtrSafe Function Private Declare Function ShellExecute Lib «shell32.dll» Alias _ «ShellExecuteA» (ByVal hwnd As Long, ByVal lpOperation As String, _ ByVal lpFile As String, ByVal lpParameters As String, _ ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long Private WithEvents Items As Outlook.Items Private Sub Application_Startup() Dim olNameSpace As Outlook.NameSpace Dim Folder As Outlook.MAPIFolder Set olNameSpace = Application.GetNamespace(«MAPI») Set Folder = olNameSpace.GetDefaultFolder(olFolderInbox) Set Items = Folder.Items End Sub Private Sub Items_ItemAdd(ByVal Item As Object) If TypeOf Item Is Outlook.MailItem Then PrintAttachments Item End If End Sub ‘Печать вложений из письма Private Sub PrintAttachments(olItem As Outlook.MailItem) On Error Resume Next Dim colAtts As Outlook.Attachments Dim olAtt As Outlook.Attachment Dim sFile As String Dim sDirectory As String Dim sFileType As String Dim pa As PropertyAccessor Dim is_attach As Boolean Const PR_ATTACH_CONTENT_ID As String = «http://schemas.microsoft.com/mapi/proptag/0x3712001F» Const PR_ATTACHMENT_HIDDEN As String = «http://schemas.microsoft.com/mapi/proptag/0x7FFE000B» Dim str1() As String Dim str2() As String sDirectory = «C:\Test\» Set colAtts = olItem.Attachments If colAtts.Count Then For Each olAtt In colAtts is_attach = False ‘Проверяем не является ли файл элементом оформления письма Set pa = objAtt.PropertyAccessor cid = pa.GetProperty(PR_ATTACH_CONTENT_ID) If Len(cid) > 0 Then If InStr(itm.HTMLBody, cid) Then is_attach = False Else ‘Если не существует PR_ATTACHMENT_HIDDEN, то возникнет ошибка ‘Просто игнорируем эту ошибку и интерпретируем как False On Error Resume Next If Not pa.GetProperty(PR_ATTACHMENT_HIDDEN) Then is_attach = True End If On Error GoTo 0 End If Else is_attach = True End If ‘определение расширения файла str1 = Split(olAtt.FileName, «.») sFileType = «.» & LCase(str1(UBound(str1))) Select Case sFileType Case «.xls», «.xlsx», «.doc», «.docx» sFile = sDirectory & «FileForPrint_» & olAtt.Index & sFileType olAtt.SaveAsFile sFile ShellExecute 0, «print», sFile, vbNullString, vbNullString, 0 Case «.pdf» sFile = sDirectory & «FileForPrint_» & olAtt.Index & sFileType olAtt.SaveAsFile sFile ‘Прописать путь к AcroRd32.exe Shell «C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe /p /h » & sFile Case «.jpg», «.png» sFile = sDirectory & «FileForPrint_» & olAtt.Index & sFileType olAtt.SaveAsFile sFile ‘Прописать путь к mspaint.exe Shell «C:\WINDOWS\system32\mspaint.exe » & sFile & » /p» Case «.zip», «.rar» sFile = sDirectory & «FileForPrint_» & olAtt.Index & sFileType sDir = sDirectory & «FileForPrint_» & olAtt.Index If Dir(sDir, vbDirectory) <> «» Then Kill sDir & «\*.*» RmDir sDir End If olAtt.SaveAsFile sFile ‘Прописать путь к winrar.exe Shell «C:\Program Files\WinRAR\winrar.exe e » & sFile & » » & sDir & «\» strFileName = Dir(sDir & «\» & «*.*») Do While strFileName <> «» ‘До тех пор пока файлы «не закончатся» ‘MsgBox strFileName str2 = Split(strFileName, «.») sFileType2 = «.» & LCase(str2(UBound(str2))) Select Case sFileType2 Case «.xls», «.xlsx», «.doc», «.docx» ShellExecute 0, «print», sDir & «\» & strFileName, vbNullString, vbNullString, 0 Case «.pdf» ‘Прописать путь к AcroRd32.exe Shell «C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe /p /h » & sDir & «\» & strFileName Case «.jpg», «.png» sFile = sDirectory & «FileForPrint_» & olAtt.Index & sFileType olAtt.SaveAsFile sFile ‘Прописать путь к mspaint.exe Shell «C:\WINDOWS\system32\mspaint.exe » & sDir & «\» & strFileName & » /p» End Select strFileName = Dir ‘Следующий файл Loop End Select Next End If End Sub ‘Процедура печать текста письма Private Sub PrintMessage(sDir) On Error Resume Next ShellExecute 0, «Print», sDir, vbNullString, «», 1 End Sub Public Sub PrintMessageAndAttach(itm As Outlook.MailItem) Dim objAtt As Outlook.Attachment Dim saveFolder As String ‘Нужно создать папку, куда временно будут сохраняться письма и их вложения перед печатью (прописывается без обратного слеша в конце) saveFolder = «C:\\Test» If Dir(saveFolder, vbDirectory) = «» Then MkDir saveFolder End If ‘Сообщение, которое всплывает после получения письма ‘Для наглядности оно отображает Тему письма, email отправителя, и количество вложений If MsgBox(«Вы хотите распечатать входящее письмо и все его вложения?» & Chr(10) & _ «Тема: » & itm.Subject & Chr(10) & _ «Отправитель: » & itm.SenderEmailAddress & Chr(10) & _ «Вложения: » & itm.Attachments.Count, vbYesNo, «Печать письма и вложений») = vbYes Then ‘Сохранение письма и его печать itm.SaveAs (saveFolder & «\Message_For_Print.msg») PrintMessage saveFolder & «\Message_For_Print.msg» ‘Печать вложений PrintAttachments itm End If End Sub
Чуть позже заказчик попросил добавить вывод сообщения о готовящейся распечатке, чтобы случайно не распечатать спам. Поэтому в коде добавлена часть с MsgBox. Если вам этого не требуется, то удалить часть с MsgBox и End If в конце. Кроме того я добавил в код проверку изображений на принадлежность к HTML-оформлению письма.
При использовании кода нужно изменить все пути (путь к mspaint.exe (в двух местах), к winrar.exe, к AcroRd32.exe (в двух местах) и к папке для временного сохранения файлов, подготовленных к печати. Сам код следует добавить в раздел ThisOutlookSession.
После этого создайте правило для всех входящих писем.
Выполнение скрипта вывода на печать 
Источники информации
- Macro to Print Outlook email attachments as they arrive
- Решение проблемы с печатью PDF — Solved: How to auto print .PDF files
- Как программно удалить из папки все файлы?
- Один из способов печати изображений через UserForms — Как распечатать jpeg файл из VBA Excel
- Способ печати изображений с помощью Paint — Print .bmp file in vb6
- Ещё один способ печати изображений — Printing an image (tiff) file
