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 > ; 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 & ; 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.

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

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