Cum să parcurgeți recursiv un arbore de foldere în Outlook prin VBA

Distribuie acum:

Dacă există subdirectoare în dosarul principal Inbox sau Sent Items, cum să le traversați într-un mod recursiv și eficient, folosind VBA, este un sfat foarte util. Această piesă critică este reutilizabilă în multe alte proiecte VBA.

Problema critică a parcurgerii dosarelor

Arborele folderelor în OutlookUtilizatorii corporativi și comerciali ai Outlook ajung adesea să aibă sute de subfoldere sub folderul principal Inbox sau cu elementele trimise, cu e-mailuri relevante în fiecare dintre acestea. Atunci când apare nevoia de a parcurge toate aceste foldere pentru a efectua o acțiune asupra e-mailurilor conținute în acestea, devine un coșmar să scrii scripturi VBA diferite pentru foldere diferite. Imaginați-vă că aveți cinci sute de foldere sub folderul principal Inbox și o cerință de script VBA pentru fiecare dintre acestea. Utilizatorul va trebui să scrie cinci sute de scripturi unice pentru fiecare dintre aceste foldere, cu funcționalități similare. Și mai rău, dacă apare nevoia de a face unele modificări, toate cele cinci sute de scripturi vor trebui actualizate. Din fericire, există o metodologie de programare cunoscută sub numele de recursiune, care rezolvă problema noastră foarte ușor. Ideea recursivității este ca o funcție să se apeleze în mod repetat și să parcurgă același model iar și iar, pentru a procesa toate elementele, cu aceeași logică. Mai jos este un exemplu de script care pornește de la folderul principal Inbox și iterează prin toate subfolderele și elementele din fiecare dintre aceste foldere.

Outlook VBA Script

Mai jos este scriptul complet Outlook VBA:

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

Cum să rulați scriptul

Anunturi Alt + F11 pentru a deschide editorul VBA Outlook și a lipi codul de mai sus în „ThisOutlookSession”. Este important de știut că, înainte de a rula acest script, biblioteca de obiecte Microsoft Outlook XX trebuie adăugată la referințele proiectului din meniurile „Instrumente”, unde XX este versiunea bibliotecii.

Înțelegeți Scriptul

Funcția de recursivitate„ProcessCurrentFolder” este funcția recursivă, care se apelează singură dacă se descoperă un subfolder în folderul curent. Va continua să se reactiveze singură, cu excepția cazului în care toate folderele, începând de la ierarhia inițială, sunt scanate și procesate. Acest script va funcționa cu orice folder Outlook. „olFolderInbox” poate fi înlocuit cu „olFolderSentMail”, „olFolderOutbox” sau poate fi orice alt folder Outlook care nu este implicit. De asemenea, este important de știut că nu este necesar să se efectueze apelul inițial din folderul rădăcină inbox sau outbox, dar se poate începe să funcționeze din orice folder în jos. „For Each objMail In objParentFolder.Items” este linia cheie care va itera prin toate elementele conținute în folderul curent scanat; prin urmare, acesta este locul în care utilizatorul trebuie să plaseze codul necesar pentru a procesa elementele.

Recuperează-te după dezastru

Dacă vă confruntați cu o situație de blocare sau eșec a Outlook, nu trebuie să vă faceți griji cu privire la e-mailurile pierdute, deoarece DataNumen îți va readuce viața la normal remedierea corupției Outlook într-un mod eficient.

Introducerea autorului:

Mary Underwood este expertă în recuperarea datelor DataNumen, Inc., care este lider mondial în tehnologiile de recuperare a datelor, inclusiv recuperare dwg și rar produse software de recuperare. Pentru mai multe informații vizitați www.datanumen.com

Distribuie acum:

Comentariile sunt închise.