Manipulation d'une pièce jointe outlook en VBA

Fermé
SPT1 - 27 mai 2020 à 19:13
yg_be Messages postés 22726 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 - 11 juin 2020 à 22:32
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 ?


Configuration: Windows / Firefox 76.0
A voir également:

2 réponses

yg_be Messages postés 22726 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 476
27 mai 2020 à 19:16
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.
1
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
0
yg_be Messages postés 22726 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 476
Modifié le 11 juin 2020 à 22:42
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.
0