Как автоматически печатать вложения при получении писем в Outlook?
Это руководство демонстрирует метод комбинирования сценария VBA и правила Outlook, чтобы помочь вам автоматически печатать вложения определенных писем при их поступлении в Outlook.
Автоматическая печать вложений при получении определенных писем
Предположим, вы хотите автоматически печатать вложения входящих писем от определенного отправителя. Вы можете сделать следующее.
Шаг 1: Создайте скрипт в Outlook
Сначала вам нужно создать сценарий VBA в Outlook.
1. Запустите ваш Outlook, одновременно нажмите клавиши Alt + F11, чтобы открыть окно Microsoft Visual Basic for Applications.
2. В окне Microsoft Visual Basic for Applications дважды щелкните Project1 > Microsoft Outlook Objects > ThisOutlookSession, чтобы открыть окно ThisOutlookSession (Код), затем скопируйте следующий код в это окно кода.

VBA код 1: Автоматическая печать вложений (всех типов вложений) при получении писем
Sub AttachementAutoPrint(Item As Outlook.MailItem)
'Updated by Extendoffice 20230223
Dim xFS As FileSystemObject
Dim xTempFolder As String
Dim xAtt As Attachment
Dim xShell As Object
Dim xFolder As Object, xFolderItem As Object
Dim xFileName As String
On Error GoTo xError
If Item.Attachments.Count = 0 Then Exit Sub
Set xFS = New FileSystemObject
xTempFolder = xFS.GetSpecialFolder(TemporaryFolder)
xTempFolder = xTempFolder & "\ATMP" & Format(Item.ReceivedTime, "yyyymmddhhmmss")
If Not xFS.FolderExists(xTempFolder) Then
MkDir (xTempFolder)
End If
Set xShell = CreateObject("Shell.Application")
Set xFolder = xShell.NameSpace(0)
For Each xAtt In Item.Attachments
If IsEmbeddedAttachment(xAtt) = False Then
xFileName = xTempFolder & "\" & xAtt.FileName
xAtt.SaveAsFile (xFileName)
Set xFolderItem = xFolder.ParseName(xFileName)
xFolderItem.InvokeVerbEx ("print")
End If
Next xAtt
Set xFS = Nothing
Set xFolder = Nothing
Set xFolderItem = Nothing
Set xShell = Nothing
xError:
If Err <> 0 Then
MsgBox Err.Number & " - " & Err.Description, , "Kutools for Outlook"
Err.Clear
End If
Exit Sub
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
Примечание: Этот код поддерживает печать всех типов вложений, полученных в письмах. Если вы хотите печатать только определенный тип вложений, например PDF-файлы, примените следующий код VBA.
VBA код 2: Автоматическая печать указанного типа вложений при получении писем
Sub AttachementAutoPrint(Item As Outlook.MailItem)
'Updated by Extendoffice 20230223
Dim xFS As FileSystemObject
Dim xTempFolder As String
Dim xAtt As Attachment
Dim xShell As Object
Dim xFolder As Object, xFolderItem As Object
Dim xFileType As String, xFileName As String
On Error GoTo xError
If Item.Attachments.Count = 0 Then Exit Sub
Set xFS = New FileSystemObject
xTempFolder = xFS.GetSpecialFolder(TemporaryFolder)
xTempFolder = xTempFolder & "\ATMP" & Format(Item.ReceivedTime, "yyyymmddhhmmss")
If Not xFS.FolderExists(xTempFolder) Then
MkDir (xTempFolder)
End If
Set xShell = CreateObject("Shell.Application")
Set xFolder = xShell.NameSpace(0)
For Each xAtt In Item.Attachments
If IsEmbeddedAttachment(xAtt) = False Then
xFileName = xAtt.FileName
xFileType = LCase$(Right$(xFileName, VBA.Len(xFileName) - VBA.InStrRev(xFileName, ".")))
xFileName = xTempFolder & "\" & xFileName
Select Case xFileType
Case "pdf" 'change "pdf" to the file extension you want to print
xAtt.SaveAsFile (xFileName)
Set xFolderItem = xFolder.ParseName(xFileName)
xFolderItem.InvokeVerbEx ("print")
End Select
End If
Next xAtt
Set xFS = Nothing
Set xFolder = Nothing
Set xFolderItem = Nothing
Set xShell = Nothing
xError:
If Err <> 0 Then
MsgBox Err.Number & " - " & Err.Description, , "Kutools for Outlook"
Err.Clear
End If
Exit Sub
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
Примечания:
3. Нажмите Инструменты > Ссылки. В открывшемся диалоговом окне Ссылки – Project1 отметьте поле Microsoft Scripting Runtime и нажмите кнопку ОК.

4. Сохраните код и нажмите клавиши Alt + Q, чтобы закрыть окно Microsoft Visual Basic for Applications.
Примечание: Убедитесь, что в вашем Outlook включена опция Включить все макросы. Вы можете проверить эту опцию, выполнив шаги, показанные ниже.

Шаг 2: Создайте правило для использования скрипта
После добавления сценария VBA в Outlook вам нужно создать правило для использования скрипта на основе определенных условий.
1. Перейдите на вкладку Главная, нажмите Правила > Управление правилами и оповещениями.

2. В диалоговом окне Правила и оповещения нажмите кнопку Новое правило, чтобы создать правило.
Советы: Если вы добавили несколько учетных записей электронной почты в свой Outlook, укажите учетную запись в выпадающем списке Применить изменения к этой папке, где вы хотите применить правило. В противном случае оно будет применено к входящим сообщениям текущей выбранной учетной записи электронной почты.

3. В первом диалоговом окне Мастер правил выберите Применить правило к получаемым сообщениям в поле Шаг 1, затем нажмите Далее.

4. Во втором диалоговом окне Мастер правил вам нужно:

5. В третьем диалоговом окне Мастер правил вам нужно настроить следующее.

Советы: Если опция «запустить скрипт» отсутствует в вашем Мастере правил, вы можете отобразить ее, следуя методу, описанному в этой статье: восстановление недостающей опции Запуск скрипта в правиле Outlook.
6. Затем появится еще одно диалоговое окно Мастер правил, запрашивающее исключения. Вы можете выбрать исключения, если это необходимо, в противном случае нажмите кнопку Далее без выбора.

7. В последнем диалоговом окне Мастер правил вам нужно указать имя для правила, а затем нажать кнопку Готово.

8. Затем вернитесь в диалоговое окно Правила и оповещения, вы увидите созданное правило в списке, нажмите кнопку ОК, чтобы завершить все настройки.

Теперь, когда письмо от указанного человека будет получено, прикрепленные файлы будут автоматически напечатаны.
Связанные статьи
Печатать только вложения из одного письма или выбранных писем в Outlook
В Outlook можно печатать письма, но пробовали ли вы печатать только вложения из одного письма или выбранных писем в Outlook? Эта статья представляет хитрости для решения этой задачи.
Печатать только заголовок сообщения электронной почты в Outlook
При печати электронной почты в Outlook будут напечатаны как заголовок сообщения, так и тело сообщения. Однако в некоторых особых случаях вам может понадобиться распечатать только заголовок сообщения с темой, отправителем, получателями и т. д. Эта статья представит два решения для этого.
Печать календаря за указанный/настраиваемый диапазон дат в Outlook
Обычно при печати календаря в режиме Месяц в Outlook автоматически выбирается месяц, содержащий текущую выбранную дату. Но вам может понадобиться печать календаря за пользовательский диапазон дат, такой как 3 месяца, полгода и т. д. Эта статья представит решение для вас.
Печать контакта с фотографией в Outlook
Обычно при печати контакта в Outlook его фотография не будет напечатана. Но иногда бывает более впечатляющим печатать контакт вместе с его фотографией. Эта статья представит некоторые обходные пути для выполнения этой задачи.
Печать части электронного письма в Outlook
Если вы получили электронное письмо и заметили, что требуется напечатать только часть содержимого письма вместо всего сообщения, что бы вы сделали? На самом деле, Outlook может помочь вам выполнить эту операцию с помощью интернет-браузеров, таких как Firefox и Internet Explorer. Здесь я возьму пример с интернет-браузеров. Посмотрите следующие инструкции.
Лучшие инструменты для повышения продуктивности в Office
Срочные новости: Kutools для Outlook запускает бесплатную версию!
Оцените совершенно новую бесплатную версию Kutools для Outlook с более чем70 потрясающими функциями — пользуйтесь ими НАВСЕГДА! Нажмите, чтобы скачать прямо сейчас!
📧 Автоматизация Email: Автоответчик (доступно для POP и IMAP) / Запланировать отправку писем / Авто Копия/Скрытая копия по правилу при отправке писем / Автоматическое перенаправление (Расширенное правило) / Автоматическое добавление приветствия / Автоматическое разделение писем с несколькими получателями на отдельные сообщения ...
📨 Управление Email: Отозвать письмо / Блокировать мошеннические письма по теме и другим параметрам / Удалить дубликаты писем / Расширенный Поиск / Организовать папки ...
📁 Вложения Pro: Пакетное сохранение / Пакетное открепление / Пакетное сжатие / Автосохранение / Автоматическое отсоединение / Автоматическое сжатие ...
🌟 Магия интерфейса: 😊Больше красивых и крутых Эмодзи / Напоминание о важных письмах / Сворачивайте Outlook вместо закрытия ...
👍 Мгновенные действия: Ответить всем с вложениями / Антифишинговые Email / 🕘Показать часовой пояс отправителя ...
👩🏼🤝👩🏻 Контакты и Календарь: Пакетное добавление контактов из выбранных писем / Разделить группу контактов на отдельные группы / Удалить напоминание о дне рождения ...

