Passer au contenu principal

Comment imprimer automatiquement les pièces jointes lorsque les e-mails arrivent dans Outlook ?

Ce didacticiel illustre une méthode permettant de combiner un script VBA et une règle Outlook pour vous aider à imprimer automatiquement les pièces jointes de certains e-mails lorsqu'ils arrivent dans Outlook.


Imprimer automatiquement les pièces jointes lorsque certains e-mails arrivent

Supposons que vous souhaitiez imprimer automatiquement les pièces jointes des e-mails entrants d'un certain expéditeur. Vous pouvez procéder comme suit pour le faire.

Étape 1 : Créer un script dans Outlook

Tout d'abord, vous devez créer un script VBA dans Outlook.

1. Lancez votre Outlook, appuyez sur le autre + F11 touches simultanément pour ouvrir le Microsoft Visual Basic pour applications fenêtre.

2. dans le Microsoft Visual Basic pour applications fenêtre, double-cliquez sur Project1 > Objets Microsoft Outlook > Cette session Outlook ouvrir le Cette session Outlook (code) fenêtre, puis copiez le code suivant dans cette fenêtre de code.

Code VBA 1 : Imprimer automatiquement les pièces jointes (tous les types de pièces jointes) à l'arrivée des e-mails

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

Remarque: Ce code prend en charge l'impression de tous les types de pièces jointes reçues dans les e-mails. Si vous souhaitez imprimer uniquement le type de pièce jointe spécifié, tel que des fichiers pdf, veuillez appliquer le code VBA suivant.

Code VBA 2 : imprime automatiquement le type de pièces jointes spécifié à l'arrivée des e-mails

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

Notes:

1. Avant d'appliquer ce code VBA pour imprimer uniquement le fichier pdf dans les e-mails entrants, vous devez d'abord télécharger et installer Adobe Acrobat Reader et définissez-le comme lecteur pdf par défaut sur votre ordinateur.
2. Dans la ligne Cas "pdf", s'il vous plaît changer "pdf" à l'extension de fichier que vous souhaitez imprimer.

3. Allez-y et cliquez Outils > Les références. Dans le popping Références – Projet1 boîte de dialogue, vérifiez le Exécution de scripts Microsoft , puis cliquez sur le OK .

4. Enregistrez le code et appuyez sur le autre + Q touches pour fermer le Microsoft Visual Basic pour applications fenêtre.

Remarque: S'il vous plaît assurez-vous que le Activer toutes les macros l'option est activée dans votre Outlook. Vous pouvez cocher cette option en suivant les étapes indiquées ci-dessous.

Étape 2 : Créer une règle pour utiliser le script

Après avoir ajouté le script VBA dans Outlook, vous devez créer une règle pour utiliser le script en fonction de certaines conditions.

1. Accédez à l'onglet Accueil, cliquez sur Règles > Gérer les règles et les alertes.

2. dans le Règles et alertes boîte de dialogue, cliquez sur le Nouvelle règle bouton pour créer une règle.

Conseils: Si vous avez ajouté plusieurs comptes de messagerie à votre Outlook, veuillez spécifier un compte dans le Appliquer les modifications à ce dossier liste déroulante où vous souhaitez appliquer la règle. Sinon, il sera appliqué à la boîte de réception du compte de messagerie actuellement sélectionné.

3. Dans le premier Assistant de règles boîte de dialogue, sélectionnez Appliquer la règle aux messages que je reçois dans l' Étape 1 boîte, puis cliquez sur Suivant.

4. Dans le second Assistant de règles boîte de dialogue, vous devez:

4.1) Spécifiez une ou plusieurs conditions dans le champ Étape 1 boîte selon vos besoins;
Dans ce cas, je souhaite imprimer uniquement les pièces jointes des e-mails entrants d'un expéditeur spécifié. Ici, je vérifie le de personnes ou d'un groupe public boîte.
4.2) Cliquez sur la valeur soulignée dans le Étape 2 case pour modifier la condition ;
4.3) Cliquez sur Suivant. Voir capture d'écran:

5. Dans le troisième Assistant de règles boîte de dialogue, vous devez configurer comme suit.

5.1) Dans le Étape 1 : sélectionnez la section action(s), vérifier la exécuter un script boîte;
5.2) Dans le Étape 2 section, cliquez sur le texte souligné « un script » ;
5.3) Dans l'ouverture Sélectionnez un script boîte de dialogue, cliquez sur le nom du code VBA que vous avez ajouté ci-dessus, puis cliquez sur OK
5.4) Cliquez sur le Suivant bouton. Voir la capture d'écran:

Conseils: Si la "exécuter un script” l'option est manquante dans votre Assistant de règles, vous pouvez l'afficher en suivant la méthode mentionnée dans cet article : restaurer l'option Exécuter un script manquante dans la règle Outlook.

6. Puis un autre Assistant de règles apparaît demandant des exceptions. Vous pouvez sélectionner les exceptions si nécessaire, sinon, cliquez sur le Suivant bouton sans aucune sélection。

7. Dans le dernier Assistant de règles, vous devez spécifier un nom pour la règle, puis cliquer sur le Finition .

8. Puis il revient au Règles et alertes boîte de dialogue, vous pouvez voir la règle que vous avez créée répertoriée à l'intérieur, cliquez sur le OK bouton pour terminer l'ensemble des paramètres.

Désormais, lorsqu'un e-mail de la personne spécifiée est reçu, les fichiers joints seront imprimés automatiquement.


Articles connexes

Imprimer uniquement les pièces jointes d'un e-mail ou d'e-mails sélectionnés dans Outlook
Dans Outlook, vous pouvez imprimer les e-mails, mais avez-vous imprimé les pièces jointes uniquement à partir d'un e-mail ou d'e-mails sélectionnés dans Outlook ? Cet article présente les astuces pour résoudre ce travail.

Imprimer uniquement l'en-tête de message d'un e-mail dans Outlook
Lors de l'impression d'un e-mail dans Outlook, il imprimera à la fois l'en-tête et le corps du message dans l'e-mail. Cependant, dans certains cas particuliers, vous devrez peut-être simplement imprimer l'en-tête du message avec le sujet, l'expéditeur, les destinataires, etc. Cet article présentera deux solutions pour le faire.

Imprimer un calendrier dans une plage de dates spécifiée/personnalisée dans Outlook
Normalement, lors de l'impression d'un calendrier en vue Mois dans Outlook, il sélectionne automatiquement le mois contenant la date actuellement sélectionnée. Mais, vous devrez peut-être imprimer le calendrier dans une plage de dates personnalisée, telle que 3 mois, la moitié de l'année, etc. Cet article vous présentera la solution.

Imprimer un contact avec une image dans Outlook
Normalement, l'image d'un contact ne sera pas imprimée lors de l'impression du contact dans Outlook. Mais parfois, il sera plus impressionnant d'imprimer un contact avec sa photo. Cet article présentera quelques solutions de contournement pour y parvenir.

Imprimer une sélection d'un e-mail dans Outlook
Si vous recevez un e-mail et constatez qu'une sélection du contenu de l'e-mail doit être imprimée au lieu d'imprimer l'intégralité du message, que feriez-vous? En fait, Outlook peut vous aider à réaliser cette opération à l'aide de navigateurs Internet, tels que Firefox et Internet Explorer. Ici, je prendrai les navigateurs Internet par exemple. Veuillez consulter les didacticiels suivants.

Plus d'articles sur "l'impression dans Outlook"...


Meilleurs outils de productivité bureautique

Kutools for Outlook - Plus de 100 fonctionnalités puissantes pour booster votre Outlook

🤖 Assistant de messagerie IA: E-mails professionnels instantanés avec la magie de l'IA : un clic pour des réponses géniales, un ton parfait, une maîtrise multilingue. Transformez l’emailing sans effort ! ...

📧 Email Automation: Absent du bureau (disponible pour POP et IMAP)  /  Programmer l'envoi d'e-mails  /  Auto CC/BCC par règles lors de l'envoi d'un e-mail  /  Transfert automatique (règles avancées)   /  Ajouter un message d'accueil automatique   /  Divisez automatiquement les e-mails multi-destinataires en messages individuels 

(I.e. Email Management: Rappel facile des e-mails  /  Bloquer les e-mails frauduleux par sujets et autres  /  Supprimer les e-mails en double  /  Recherche Avancée  /  Consolider les dossiers 

(I.e. Pièces jointes ProSauvegarde par lots  /  Détachement par lots  /  Compression par lots  /  Enregistrement automatique   /  Détachement automatique  /  Compression automatique 

???? Magie de l'interface: 😊Plus d'émojis jolis et cool   /  Boostez votre productivité Outlook avec des vues à onglets  /  Réduire Outlook au lieu de fermer 

???? Merveilles en un clic: Répondre à tous avec les pièces jointes entrantes  /   E-mails anti-hameçonnage  /  🕘Afficher le fuseau horaire de l'expéditeur 

👩🏼‍🤝‍👩🏻 Contacts et calendrier: Ajouter par lots des contacts à partir des e-mails sélectionnés  /  Diviser un groupe de contacts en groupes individuels  /  Supprimer les rappels d'anniversaire 

infos Caractéristiques 100 Attendez votre exploration ! Cliquez ici pour en savoir plus.

 

 

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