Comment parcourir une arborescence de dossiers de manière récursive dans Outlook via VBA

Partage maintenant:

S'il existe des sous-dossiers dans le dossier principal de la boîte de réception ou des éléments envoyés, comment les parcourir de manière récursive et efficace, à l'aide de VBA, est une astuce très utile. Cette pièce essentielle est réutilisable dans de nombreux autres projets VBA.

Le problème critique du parcours des dossiers

Arborescence des dossiers dans OutlookLes utilisateurs professionnels d'Outlook se retrouvent souvent avec des centaines de sous-dossiers dans leur boîte de réception principale ou leur dossier « Éléments envoyés », chacun contenant des e-mails. Lorsqu'il faut parcourir tous ces dossiers pour effectuer une action sur les e-mails qu'ils contiennent, écrire un script VBA différent pour chaque dossier devient un véritable casse-tête. Imaginez cinq cents dossiers sous la boîte de réception principale, nécessitant un script VBA pour chacun d'eux. L'utilisateur devrait alors écrire cinq cents scripts uniques, un pour chaque dossier, avec une fonctionnalité similaire. Pire encore, toute modification nécessiterait la mise à jour de ces cinq cents scripts. Heureusement, la récursivité est une méthode de programmation qui résout ce problème en toute simplicité. Le principe de la récursivité est qu'une fonction s'appelle elle-même de manière répétée et parcourt le même schéma, encore et encore, afin de traiter tous les éléments, selon la même logique. Voici un exemple de script qui part de la boîte de réception principale et parcourt tous les sous-dossiers et leurs éléments.

Script VBA Outlook

Vous trouverez ci-dessous le script Outlook VBA complet :

Private Sub Main()
    Dim objNameSpace As Outlook.NameSpace
    Dim objMainFolder As Outlook.Folder
    
    Set objNameSpace = Application.GetNamespace("MAPI")
    Set objMainFolder = objNameSpace.GetDefaultFolder(olFolderInbox)
    
    Call ProcessCurrentFolder(objMainFolder)
End Sub
 
Private Sub ProcessCurrentFolder(ByVal objParentFolder As Outlook.MAPIFolder)
    Dim objCurFolder As Outlook.MAPIFolder
    Dim objMail As Outlook.MailItem
    
    On Error Resume Next
    
    '    Process each items in the folder
    For Each objMail In objParentFolder.Items
        '    Do your task here ...
    Next
    
    '    Process the subfolders in the folder recursively
    If (objParentFolder.Folders.Count > 0) Then
        For Each objCurFolder In objParentFolder.Folders
            Call ProcessCurrentFolder(objCurFolder)
        Next
    End If
End Sub

Comment exécuter le script

Presse Alt + F11 Ouvrez l’éditeur VBA d’Outlook et collez le code ci-dessus dans « ThisOutlookSession ». Il est important de noter qu’avant d’exécuter ce script, la bibliothèque d’objets Microsoft Outlook XX doit être ajoutée aux références du projet via le menu « Outils », où XX correspond à la version de la bibliothèque.

Comprendre le scénario

Fonction de récursivitéLa fonction récursive « ProcessCurrentFolder » s'appelle elle-même lorsqu'un sous-dossier est détecté dans le dossier courant. Elle continue de s'appeler jusqu'à ce que tous les dossiers, depuis la racine, aient été analysés et traités. Ce script est compatible avec tous les dossiers Outlook. « olFolderInbox » peut être remplacé par « olFolderSentMail », « olFolderOutbox » ou tout autre dossier Outlook non standard. Il est important de noter qu'il n'est pas nécessaire d'effectuer l'appel initial depuis le dossier racine de la boîte de réception ou de la boîte d'envoi ; le script peut démarrer à partir de n'importe quel sous-dossier. La ligne clé « For Each objMail In objParentFolder.Items » parcourt tous les éléments du dossier en cours d'analyse ; c'est donc ici que l'utilisateur doit insérer le code nécessaire au traitement de ces éléments.

Se remettre d'un désastre

Si vous rencontrez un problème avec Outlook (plantage ou dysfonctionnement), ne vous inquiétez pas pour vos e-mails perdus, car DataNumen ramènera votre vie à la normale en réparer la corruption d'Outlook de manière efficace.

Introduction de l'auteur:

Mary Underwood est une experte en récupération de données dans DataNumen, Inc., qui est le leader mondial des technologies de récupération de données, y compris récupération de fichiers DWG et rar produits logiciels de récupération. Pour plus d'informations, visitez www.datanumen.com

Partage maintenant:

Les commentaires sont fermés.