VBA Enregistrer la pièce jointe d’un e-mail

VBA - Visual Basic for Application

Outlook est un programme très répandu, notamment dans le domaine professionnel, pour la gestion et le traitement des e-mails et bien sûr bien plus encore si l’on ne pense qu’au calendrier et à la gestion des tâches.

Un grand avantage d’Outlook par rapport à d’autres clients de messagerie est qu’il apporte VBA (Visual Basic for Applications), ce qui permet d’automatiser de nombreuses tâches supplémentaires, si les fonctions appropriées ne peuvent pas déjà être effectuées par les règles d’Outlook et les fonctions intégrées.

Enregistrer automatiquement une pièce jointe à un e-mail avec VBA

Une tâche qui peut faire économiser de nombreux clics est l’enregistrement des pièces jointes aux e-mails. Si l’on a des e-mails récurrents typiques dont la pièce jointe doit toujours être enregistrée sous le même chemin, il faut à chaque fois cliquer sur le dialogue “Enregistrer sous” pour atteindre ce chemin.

Grâce à VBA, on peut écrire une macro pour enregistrer la pièce jointe. On peut ensuite attribuer un shortcut à la macro ou insérer un bouton dans la barre d’outils pour l’accès rapide. Ainsi, il suffit finalement d’un clic ou d’une pression sur une touche pour enregistrer la pièce jointe du mail. Une telle macro peut également être combinée avec d’autres macros, de sorte que, par exemple, la pièce jointe à l’e-mail soit imprimée en même temps par VBA.

Code VBA pour enregistrer la pièce jointe d’un e-mail Outlook

Le code VBA suivant permet d’enregistrer les pièces jointes sous un chemin de dossier prédéfini. Seules les pièces jointes du message sélectionné sont enregistrées.

Dans Outlook, on accède à Visual Basic Editor par la combinaison de touches Ctrl+F11. Il est également possible de passer par le menu Outils de développement => Visual Basic.


Public Sub SaveAttachments()

    Dim objOL As Outlook.Application
    Dim objMsg As Outlook.MailItem
    Dim objAttachments As Outlook.Attachments
    Dim objSelection As Outlook.Selection
    Dim i As Long
    Dim lngCount As Long
    Dim strFile As String
    Dim strFolderpath As String
    
    ' Instancier l'objet Outlook Application
    Set objOL = CreateObject("Outlook.Application")
    
    ' Déterminer la collection des objets sélectionnés (e-mails)
    Set objSelection = objOL.ActiveExplorer.Selection
    
    ' Définir le chemin du dossier où la pièce jointe de l'e-mail doit être enregistrée
    strFolderpath = "c:\Users\AnyUser\Documents\underordner\rechnungen\jahr_2020\"
    
    ' Vérifier chaque objet sélectionné (e-mail) pour voir s'il a une pièce jointe. S'il y a une pièce jointe,
    ' puis enregistrer sous le chemin du dossier.
    For Each objMsg In objSelection
    
        ' Déterminer les pièces jointes de l'objet sélectionné (e-mail).
        Set objAttachments = objMsg.Attachments
        lngCount = objAttachments.Count
    
        If lngCount &gt ; 0 Then
    
            ' Nous utilisons ici un compteur à rebours, mais l'inverse devrait également fonctionner.
    
            For i = lngCount To 1 Step -1
    
                ' Enregistrer l'attachement avant de le supprimer de l'élément.
                ' Déterminer le nom du fichier
                strFile = objAttachments.Item(i).FileName
    
                ' Combiner le chemin d'archivage avec le nom de fichier
                strFile = strFolderpath &amp ; strFile
    
                 Enregistrer la pièce jointe en tant que fichier
                objAttachments.Item(i).SaveAsFile strFile
    
            Next i
    
        End If
    Next
    
ExitSub :
    Set objAttachments = Nothing
    Set objMsg = Nothing
    Set objSelection = Nothing
    Set objOL = Nothing
End Sub

Appeler la macro Outlook via l’accès rapide

On peut maintenant appeler ou exécuter la macro, à condition qu’elle soit Public, via les Outils de développement ? Macro ? Boîte de dialogue Macros. Ou bien on dépose un bouton dans l’accès rapide. Via la petite flèche vers le bas dans l’accès rapide, on choisit “Autres commandes …” ou on passe par Fichier ? Options ? Barre d’outils Accès rapide.

Capture d'écran Outlook Attribuer un bouton d'accès rapide pour exécuter la macro
Attribuer un bouton d’accès rapide Outlook pour exécuter la macro

Dans la fenêtre de dialogue qui s’ouvre alors, on limite les commandes aux macros et on ajoute la macro en question.

Capture d'écran Options Outlook Barre d'outils Accès rapide
Sélectionner la macro et l’autoriser à l’aide du bouton Ajouter à l’accès rapide

Le bouton “Modifier” permet ensuite d’attribuer une icône ou d’adapter le texte.

Leave a Reply

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *