Manipulation d'une pièce jointe outlook en VBA
SPT1
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
A réception d'un message, je souhaite collecter l'image qui est en pièce jointe, et produire un nouveau message avec cette image dans son corps HTML et en pièce jointe.
J'arrive à :
- identifier le message attendu dans outlook,
- identifier si une pièce jointe est présente,
- Préparer et envoyer un message avec un corps HTML
- Mettre une signature outlook
Mais je n'arrive pas à associer la pièce jointe, au mieux j'ai un trombone mais sans document.
Pouvez-vous m'aider ?
A réception d'un message, je souhaite collecter l'image qui est en pièce jointe, et produire un nouveau message avec cette image dans son corps HTML et en pièce jointe.
J'arrive à :
- identifier le message attendu dans outlook,
- identifier si une pièce jointe est présente,
- Préparer et envoyer un message avec un corps HTML
- Mettre une signature outlook
Mais je n'arrive pas à associer la pièce jointe, au mieux j'ai un trombone mais sans document.
Pouvez-vous m'aider ?
Configuration: Windows / Firefox 76.0
2 réponses
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour, tu ne nous montres pas ce que tu fais avec la pièce jointe reçue, ni comment tu essaies de la joindre à l'envoi. -
Voici le contenu du code
Private Sub Application_NewMailEx(ByVal EntryIDCollection As String) 'Variables Dim arrID() As String Dim i, j As Integer Dim ns_outlook As outlook.NameSpace Dim item_outlook As MailItem Dim itm As outlook.MailItem Dim expéditeur As String Dim objet_email As String Dim outlook As Object Dim outlookMail As Object Dim Mesattachements As outlook.Attachments Dim Piecejointe As outlook.Attachments 'En cas d'erreur On Error Resume Next Set ns_outlook = Application.Session 'Séparer le matricule de l'objet Outlook arrID = Split(EntryIDCollection, ",") For i = 0 To UBound(arrID) Set item_outlook = ns_outlook.GetItemFromID(arrID(i)) If item_outlook.Class = olMail Then Set itm = item_outlook expediteur = itm.SenderName objet_email = itm.Subject Set Mesattachements = itm.Attachments If Mesattachements.Count > 0 And Right(UCase(Mesattachements(1).FileName), 4) = ".PNG" Then 'La pièce jointe est une image PNG If expediteur = "XXXXX" And objet_email = "TEST" Then Set Piecejointe = itm.Attachments(1) Set outlook = CreateObject("Outlook.Application") Set outlookMail = outlook.CreateItem(0) stringbody = "<B><SPAN STYLE='font-family: Segoe UI; font-size:21'>Suivi Quotidien</SPAN></B><br>" stringbody = stringbody & "<SPAN STYLE='font-family: Segoe UI; font-size:12'>Veuillez trouver ci-après le document actualisé.</SPAN><br><br>" stringbody = stringbody & "<SPAN STYLE='font-family: Segoe UI; font-size:12'>Cordialement" & " </SPAN>" 'stringbody = stringbody & "<IMG src""cid: With outlookMail .Display .To = "ZZZZZZZZZ" .Subject = "SUJET DU MESSAGE" .HTMLBody = stringbody & .HTMLBody '.Attachments = piecejointe .Display .Send End With End If End If End If Next Set ns_outlook = Nothing Set item_outlook = Nothing Set itm = Nothing Set Piecejointe = Nothing End Sub-
merci d'utiliser les balises de code quand tu partages du code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
as-tu ajoutéoption explicit
en début de module?
où essaies-tu d'insérer la pièce jointe dans le mail envoyé? je pense que cela se fait en utilisant Add, comme expliqué ici: https://docs.microsoft.com/fr-ch/office/vba/api/outlook.attachments.add
il me semble probable qu'il faille sauver le fichier sur disque avant de l'attacher à un autre mail.
-