Прескочи на основното съдържание

Как автоматично да отпечатвам прикачени файлове, когато имейлите пристигнат в Outlook?

Автор: Силувия Последна промяна: 2023-02-23

Този урок демонстрира метод за комбиниране на VBA скрипт и правило на Outlook, за да ви помогне автоматично да отпечатвате прикачени файлове на определени имейли, когато пристигнат в Outlook.


Автоматично отпечатване на прикачени файлове, когато пристигнат определени имейли

Да предположим, че искате автоматично да отпечатате прикачени файлове на входящи имейли от определен подател. Можете да направите следното, за да го направите.

Стъпка 1: Създайте скрипт в Outlook

Първо, трябва да създадете VBA скрипт в Outlook.

1. Стартирайте вашия Outlook, натиснете Друг + F11 клавиши едновременно, за да отворите Microsoft Visual Basic за приложения прозорец.

2. В Microsoft Visual Basic за приложения прозорец, щракнете два пъти върху Project1 > Обекти на Microsoft Outlook > 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

бележки:

1. Преди да приложите този VBA код за отпечатване само на pdf файла във входящите имейли, първо трябва да изтеглите и инсталирате Adobe Acrobat Reader и го задайте като четец на PDF файлове по подразбиране във вашия компютър.
2. В линията Калъф "pdf", моля, променете "pdf" към файловото разширение, което искате да отпечатате.

3. Продължете и щракнете Инструменти > Препратки. В изскачащите Референции – Проект1 диалоговия прозорец, проверете Microsoft Scripting Runtime и след това щракнете върху OK бутон.

4. Запазете кода и натиснете Друг + Q ключове за затваряне на Microsoft Visual Basic за приложения прозорец.

Забележка: Моля, уверете се, че Активирайте всички макроси опцията е активирана във вашия Outlook. Можете да проверите тази опция, като следвате стъпките, показани по-долу.

Стъпка 2: Създайте правило за използване на скрипта

След като добавите VBA скрипта в Outlook, трябва да създадете правило за използване на скрипта въз основа на определени условия.

1. Отидете в раздела Начало, щракнете Правилник > Управление на правила и сигнали.

2. В Правила и сигнали кликнете върху Ново правило бутон за създаване на правило.

Съвет: Ако сте добавили няколко имейл акаунта към вашия Outlook, моля, посочете акаунт в Приложете промените към тази папка падащ списък, където искате да приложите правилото. В противен случай ще се приложи към входящата кутия на текущо избрания имейл акаунт.

3. В първия Съветник за правила изберете диалоговия прозорец Прилагане на правилото за получените от мен съобщения в Стъпка , след което щракнете върху Next.

4. Във втория Съветник за правила диалогов прозорец, трябва да:

4.1) Посочете едно или повече условия в Стъпка кутия според вашите нужди;
В този случай искам да отпечатам само прикачените файлове във входящи имейли от определен подател. Ето, проверявам от хора или обществена група кутия.
4.2) Щракнете върху подчертаната стойност в Стъпка кутия за редактиране на условието;
4.3) Щракнете Next. Вижте екранна снимка:

5. В третата Съветник за правила диалогов прозорец, трябва да конфигурирате както следва.

5.1) В Стъпка 1: Изберете секцията с действия, проверете стартирайте скрипт кутия;
5.2) В Стъпка раздел, щракнете върху подчертания текст „скрипт“;
5.3) В откриването Изберете Скрипт диалоговия прозорец, щракнете върху името на VBA кода, който сте добавили по-горе, и след това щракнете ДОБРЕ;
5.4) Щракнете върху Напред бутон. Вижте екранна снимка:

Съвет: Ако „стартирайте скрипт” липсва във вашия Съветник за правила, можете да го покажете, като следвате метода, споменат в тази статия: възстановяване на липсващото правило Run A Script pption в Outlook.

6. След това още един Съветник за правила изскача с молба за изключения. Можете да изберете изключенията, ако е необходимо, в противен случай щракнете върху Напред бутон без никакви селекции.

7. В последното Съветник за правила, трябва да зададете име за правилото и след това да щракнете върху завършеност бутон.

8. След това се връща към Правила и сигнали диалогов прозорец, можете да видите създаденото от вас правило, посочено вътре, щракнете върху OK бутон, за да завършите всички настройки.

Отсега нататък, когато се получи имейл от посочения човек, прикачените файлове ще се отпечатват автоматично.


Свързани статии

Отпечатайте само прикачен(и) файл(и) от един имейл или избрани имейли в Outlook
В Outlook можете да отпечатате имейлите, но отпечатали ли сте прикачените файлове само от един имейл или избрани имейли в Outlook? Тази статия представя триковете за решаване на тази задача.

Отпечатайте само заглавката на съобщението на имейл в Outlook
Когато отпечатвате имейл в Outlook, той ще отпечата както заглавката, така и тялото на съобщението в имейла. В някои специални случаи обаче може просто да се наложи да отпечатате заглавката на съобщението с темата, подателя, получателите и т.н. Тази статия ще представи две решения за това.

Отпечатайте календар в определен/персонализиран период от време в Outlook
Обикновено, когато отпечатвате календар в месечен изглед в Outlook, той автоматично ще избере месеца, съдържащ текущо избраната дата. Но може да се наложи да отпечатате календара в персонализиран диапазон от дати, като 3 месеца, половината от годината и т.н. Тази статия ще ви представи решението.

Отпечатайте контакт със снимка в Outlook
Обикновено снимката на контакт няма да се отпечата при отпечатване на контакта в Outlook. Но понякога ще бъде по-впечатляващо да отпечатате контакт с неговата снимка. Тази статия ще представи някои заобиколни решения, за да го направите.

Отпечатайте селекция от имейл в Outlook
Ако получите имейл съобщение и установите, че има селекция от имейл съдържание, което трябва да бъде отпечатано, вместо да отпечатате цялото съобщение, какво бихте направили? Всъщност Outlook може да ви помогне да постигнете тази операция с помощта на интернет браузъри, като Firefox и Internet Explorer. Тук ще взема за пример интернет браузърите. Моля, разгледайте следните уроци.

Още статии за "печат в Outlook"...


Най-добрите инструменти за продуктивност в офиса

Kutools за Outlook - Над 100 мощни функции, за да заредите вашия Outlook

🤖 AI Mail Assistant: Незабавни професионални имейли с AI магия - с едно щракване до гениални отговори, перфектен тон, многоезично владеене. Трансформирайте имейла без усилие! ...

📧 Автоматизиране на имейли: Извън офиса (налично за POP и IMAP)  /  График за изпращане на имейли  /  Автоматично CC/BCC по правила при изпращане на имейл  /  Автоматично пренасочване (разширени правила)   /  Автоматично добавяне на поздрав   /  Автоматично разделяне на имейлите с множество получатели на отделни съобщения ...

📨 Управление на Email: Лесно извикване на имейли  /  Блокиране на измамни имейли по теми и други  /  Изтриване на дублирани имейли  /  подробно търсене  /  Консолидиране на папки ...

📁 Прикачени файлове ProПакетно запазване  /  Партидно отделяне  /  Партиден компрес  /  Автоматично запазване   /  Автоматично отделяне  /  Автоматично компресиране ...

🌟 Магия на интерфейса: 😊 Още красиви и готини емотикони   /  Увеличете продуктивността на Outlook с изгледи с раздели  /  Минимизирайте Outlook, вместо да затваряте ...

???? Чудеса с едно кликване: Отговорете на всички с входящи прикачени файлове  /   Антифишинг имейли  /  🕘Показване на часовата зона на подателя ...

👩🏼‍🤝‍👩🏻 Контакти и календар: Групово добавяне на контакти от избрани имейли  /  Разделете група контакти на отделни групи  /  Премахнете напомнянията за рожден ден ...

Над 100 Характеристики Очаквайте вашето проучване! Щракнете тук, за да откриете повече.

 

 

Comments (22)
No ratings yet. Be the first to rate!
This comment was minimized by the moderator on the site
Kan deze script ook gemaakt worden voor het verzenden van emails, dat je dan automatisch de bijlage kan laten afdrukken ?
This comment was minimized by the moderator on the site
Hello, thank you very much for the scripts, very useful indeed!
What if we wanted to print all attachments in an email in Outlook 365 web instead? Are there ways to try this?
This comment was minimized by the moderator on the site
Hi is there a way to print the email body including sender details and subject line in the script please. I pretty much need email and attachment printed out please.
This comment was minimized by the moderator on the site
Hi Mani,

If you want to print an email body including sender details and subject line, I suggest you try the Advanced Print feature of Kutools for Outlook. It can help you solve the problem easily.
https://www.extendoffice.com/images/stories/comments/comment-picture-zxm/advanced-print.png?1696644946
This comment was minimized by the moderator on the site
First of all, thanks a lot for these useful VBA scripts!
My situation is as follows: I usually receive a number of emails with 2 pdf files each. One pdf file, let's call it example1.pdf, needs to be printed only once, but the second pdf file, let's call it example2.pdf, needs to be printed 3 times. The example2.pdf does not necessarily always have the same name, but there are only around 2-4 name variants, so if it were possible to tell the script to look out for a few keywords I think it would work. Is this possible?
Oh, and would it be possible to also tell the script to print the example1.pdf file as duplex?
Thanks for your help.
This comment was minimized by the moderator on the site
Hi There, thanks for publishing this

I have followed the instructions above and are running the script to print all attachments delivered.

we typically receive these in batches of 5-8 and when testing i am getting 4 out of 5 prints with one failing with error 75. All PDF's have different names and are on separate emails/ the attachements can be opened manually fine so i assume theres an issue when it tries to copy this to the temp directory. Do you have any idea how we can resolve this?
This comment was minimized by the moderator on the site
Same problem here. After a couple of emails received during a short time, it can print 3-4 pdf, but after the error 75 appear, nothing print in the same batch of mails.
This comment was minimized by the moderator on the site
Hi Gabriel,
After testing, we have reproduced the problem you encountered. the VBA scripts have been updated in the post. Please give them a try. Thanks for your feedback.
This comment was minimized by the moderator on the site
Love this script! How about if I get an email with multiple pdfs and want one copy of each. Currently when I get 3 pdf's attached, it prints the final one, 3 times, and the other 2 do not get printed. Thanks for any help!
This comment was minimized by the moderator on the site
Hi val,

Sorry for the inconvenience.
Which VBA code are you applying? VBA code 1 or VBA code 2? Do the three PDF attachments have the same name? And which Outlook version are you using?
I have tested the codes and they worked well in my case. I need to know more specific about your issue.
This comment was minimized by the moderator on the site
Is it possible to specify the printer that should be used (not the system default printer)?
I need to print 2 types of documents on 2 different printers....
Thanks for your help!
This comment was minimized by the moderator on the site
Hi Simon,
Thank you for your comment. After trying with various methods, I can't seem to get this to work. Sorry for the inconvenience.
This comment was minimized by the moderator on the site
Hello, kindly I need help, I can't integrate the script for printing pdf only.
I activated everything, the first script for generic printing works perfectly (or almost: printing pdf attachments once printed acrobat reader remains open in the background), but the specific script for pdf does not work. Thanks for posting the scripts and for any help.
Good day
This comment was minimized by the moderator on the site
Hi Marco041,
There was something wrong with the code and it has been updated. Please give it a try.
Note: we have no way to prevent Acrobat Reader from being opened because we need to use it to open the pdf document for the next print job.
Thank you for your feedback.
Sub AttachementAutoPrint(Item As Outlook.MailItem)
'Updated by Extendoffice 20220920
  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
  Set xFS = New FileSystemObject
  xTempFolder = xFS.GetSpecialFolder(TemporaryFolder)
  xTempFolder = xTempFolder & "\ATMP" & Format(Now, "yyyymmddhhmmss")
  MkDir (xTempFolder)
  'Set Item = Application.ActiveExplorer.Selection.Item(1)
  Set xShell = CreateObject("Shell.Application")
  Set xFolder = xShell.NameSpace(0)
  For Each xAtt In Item.Attachments
    xFileName = xAtt.FileName
    xFileType = LCase$(Right$(xFileName, VBA.Len(xFileName) - VBA.InStrRev(xFileName, ".")))
    xFileName = xTempFolder & "\" & xFileName
    xAtt.SaveAsFile (xFileName)
    Select Case xFileType
      Case "pdf"   'change "pdf" to the file extension you want to print
        Set xFolderItem = xFolder.ParseName(xFileName)
        xFolderItem.InvokeVerbEx ("print")
    End Select
  Next xAtt
'xFS.DeleteFolder (xTempFolder)
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
This comment was minimized by the moderator on the site
Bonjour question pour vous j'ai fait les étapes pour cela mais dans les règle de message de mon outlook je ne voit pas que je peux utilisé un script
This comment was minimized by the moderator on the site
Hi STEPHANE CADORETTE,
If the “run a script” option is missing in your Rules Wizard, you can display it by following the method mentioned in this article: restore missing Run A Script pption in Outlook rule.
This comment was minimized by the moderator on the site
Bonjour moi j'ai un petit soucie lorsque j'ai fait et refait les étapes mais lorsque je créer ma règle je n'Ai pas l'option run a script.
This comment was minimized by the moderator on the site
Hi Stéphane,
If the “run a script” option is missing in your Rules Wizard, you can display it by following the method mentioned in this article: restore missing Run A Script pption in Outlook rule.
There are no comments posted here yet
Load More
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations