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
Utilizatorii 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

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