Gå til hovedindhold

Hvordan udskriver man automatisk vedhæftede filer, når e-mails ankommer i Outlook?

Denne vejledning viser en metode til at kombinere et VBA-script og en Outlook-regel for at hjælpe dig med automatisk at udskrive vedhæftede filer til bestemte e-mails, når de ankommer til Outlook.


Udskriv automatisk vedhæftede filer, når visse e-mails ankommer

Antag, at du vil udskrive vedhæftede filer af indgående e-mails fra en bestemt afsender automatisk. Du kan gøre som følger for at få det gjort.

Trin 1: Opret et script i Outlook

For det første skal du oprette et VBA-script i Outlook.

1. Start din Outlook, tryk på andre + F11 taster samtidigt for at åbne Microsoft Visual Basic til applikationer vindue.

2. i Microsoft Visual Basic til applikationer vindue, dobbeltklik på Project1 > Microsoft Outlook-objekter > Denne OutlookSession at åbne ThisOutlookSession (kode) vindue, og kopier derefter følgende kode ind i dette kodevindue.

VBA-kode 1: Udskriv automatisk vedhæftede filer (alle typer vedhæftede filer), når e-mails ankommer

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

Bemærk: Denne kode understøtter udskrivning af alle typer vedhæftede filer modtaget i e-mails. Hvis du kun ønsker at udskrive den angivne type vedhæftet fil, såsom pdf-filer, skal du anvende følgende VBA-kode.

VBA-kode 2: Udskriv automatisk den angivne type vedhæftede filer, når e-mails ankommer

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

Noter:

1. Før du anvender denne VBA-kode til kun at udskrive pdf-filen i de indgående e-mails, skal du først downloade og installere Adobe Acrobat Reader og indstil den som standard pdf-læser på din computer.
2. I rækken Sag "pdf"skal du ændre "pdf" til den filtype, du vil udskrive.

3. Gå videre og klik Værktøjer > Referencer. I dukker op Referencer – Projekt 1 dialogboksen, skal du kontrollere Microsoft Scripting Runtime og klik derefter på OK .

4. Gem koden, og tryk på andre + Q taster for at lukke Microsoft Visual Basic til applikationer vindue.

Bemærk: Sørg for at Aktivér alle makroer indstillingen er aktiveret i din Outlook. Du kan markere denne mulighed ved at følge trinene vist nedenfor.

Trin 2: Byg en regel for at bruge scriptet

Efter at have tilføjet VBA-scriptet i Outlook, skal du oprette en regel for at bruge scriptet baseret på visse betingelser.

1. Gå til fanen Hjem, klik Regler > Administrer regler og advarsler.

2. i Regler og advarsler dialogboksen, skal du klikke på knappen Ny regel knap for at oprette en regel.

tips: Hvis du har tilføjet flere e-mail-konti til din Outlook, skal du angive en konto i Anvend ændringer på denne mappe rullemenuen, hvor du vil anvende reglen. Ellers vil det blive anvendt på indbakken på den aktuelt valgte e-mail-konto.

3. I den første Guiden til regler dialogboksen, vælg Anvend regel på meddelelser, jeg modtager i Trin 1 boks, og klik derefter på Næste.

4. I det andet Guiden til regler dialogboks skal du:

4.1) Angiv en eller flere betingelser i Trin 1 boks efter dine behov;
I dette tilfælde vil jeg kun udskrive de vedhæftede filer i indgående e-mails fra en specificeret afsender. Her tjekker jeg fra mennesker eller offentlig gruppe boks.
4.2) Klik på den understregede værdi i Trin 2 boks for at redigere betingelsen;
4.3) Klik Næste. Se skærmbillede:

5. I det tredje Guiden til regler dialogboks, skal du konfigurere som følger.

5.1) I Trin 1: Vælg handling(er) sektion, Tjek køre et script boks;
5.2) I Trin 2 sektion, klik på den understregede tekst "et script";
5.3) I åbningen Vælg script dialogboksen, klik på navnet på den VBA-kode, du tilføjede ovenfor, og klik derefter OKAY;
5.4) Klik på Næste knap. Se skærmbillede:

tips: Hvis "køre et script” mulighed mangler i din Guiden til regler, kan du vise det ved at følge metoden nævnt i denne artikel: gendan manglende Kør en script-ption i Outlook-reglen.

6. Så en anden Guiden til regler dukker op og spørger om undtagelser. Du kan vælge undtagelserne, hvis det er nødvendigt, ellers skal du klikke på Næste knap uden valg.

7. I det sidste Guiden til regler, skal du angive et navn til reglen og derefter klikke på Finish .

8. Derefter vender det tilbage til Regler og advarsler dialogboksen, kan du se den regel, du oprettede, listet inde, klik på OK for at afslutte alle indstillingerne.

Fra nu af, når en e-mail fra den angivne person modtages, vil de vedhæftede filer blive udskrevet automatisk.


Relaterede artikler

Udskriv kun vedhæftede filer fra én e-mail eller udvalgte e-mails i Outlook
I Outlook kan du udskrive mails, men har du kun udskrevet de vedhæftede filer fra én mail eller udvalgte mails i Outlook? Denne artikel introducerer tricks til at løse dette job.

Udskriv kun meddelelseshoved på en e-mail i Outlook
Når du udskriver en e-mail i Outlook, udskriver den både meddelelseshoved og meddelelsestekst i e-mailen. Men i nogle specielle tilfælde skal du muligvis bare udskrive meddelelseshovedet med emne, afsender, modtagere osv. Denne artikel introducerer to løsninger til at gøre det.

Udskriv en kalender i et specificeret/tilpasset datointerval i Outlook
Normalt, når du udskriver en kalender i månedsvisning i Outlook, vil den automatisk vælge den måned, der indeholder den aktuelt valgte dato. Men du skal muligvis udskrive kalenderen inden for et tilpasset datointerval, såsom 3 måneder, et halvt år osv. Denne artikel introducerer løsningen for dig.

Udskriv en kontakt med billede i Outlook
Normalt udskrives en kontakts billede ikke, når kontakten udskrives i Outlook. Men nogle gange vil det være mere imponerende at udskrive en kontakt med sit billede. Denne artikel vil introducere nogle løsninger til at få det gjort.

Udskriv et udvalg af en e-mail i Outlook
Hvis du modtog en e-mail-besked og fandt ud af, at der er et udvalg af e-mail-indholdet, der skal udskrives i stedet for at udskrive hele meddelelsen, hvad ville du gøre? Faktisk kan Outlook hjælpe dig med at opnå denne handling ved hjælp af internetbrowsere, såsom Firefox og Internet Explorer. Her vil jeg tage internetbrowserne for eksempel. Se venligst følgende tutorials.

Flere artikler om "udskrivning i Outlook"...


Bedste kontorproduktivitetsværktøjer

Kutools til Outlook - Over 100 kraftfulde funktioner til at superlade din Outlook

🤖 AI Mail Assistant: Øjeblikkelige pro-e-mails med AI-magi – et klik for geniale svar, perfekt tone, flersproget beherskelse. Forvandl e-mailing ubesværet! ...

📧 Email Automation: Ikke til stede (tilgængelig til POP og IMAP)  /  Planlæg Send e-mails  /  Auto CC/BCC efter regler ved afsendelse af e-mail  /  Automatisk videresendelse (avancerede regler)   /  Tilføj automatisk hilsen   /  Opdel automatisk e-mails med flere modtagere i individuelle meddelelser ...

📨 Email Management: Genkald nemt e-mails  /  Bloker svindel-e-mails af emner og andre  /  Slet duplikerede e-mails  /  Avanceret søgning  /  Konsolider mapper ...

📁 Vedhæftede filer ProBatch Gem  /  Batch adskilles  /  Batch komprimere  /  Automatisk gem   /  Automatisk afmontering  /  Automatisk komprimering ...

🌟 Interface Magic: 😊 Flere smukke og seje emojis   /  Boost din Outlook-produktivitet med fanebaserede visninger  /  Minimer Outlook i stedet for at lukke ...

👍 Wonders med et enkelt klik: Besvar alle med indgående vedhæftede filer  /   Anti-phishing e-mails  /  🕘Vis afsenderens tidszone ...

👩🏼‍🤝‍👩🏻 Kontakter og kalender: Batch Tilføj kontakter fra udvalgte e-mails  /  Opdel en kontaktgruppe til individuelle grupper  /  Fjern fødselsdagspåmindelser ...

Over 100 Features Afvent din udforskning! Klik her for at finde mere.

Læs mere       Gratis download      Køb
 

 

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