Ako rekurzívne prechádzať stromom priečinkov v programe Outlook pomocou VBA

Zdieľať teraz:

Ak sa v hlavnom priečinku Doručená pošta alebo Sent Items nachádzajú podpriečinky, je veľmi užitočný tip, ako ich rekurzívnym a efektívnym spôsobom prechádzať pomocou VBA. Tento kritický kúsok je opakovane použiteľný v mnohých ďalších projektoch VBA.

Kritický problém prechádzania priečinkov

Strom priečinkov v programe OutlookFiremní a komerční používatelia Outlooku majú často pod hlavnou schránkou alebo odoslanou poštou stovky podpriečinkov s relevantnými e-mailami v každom z nich. Keď je potrebné prejsť si všetky tieto priečinky, aby sa vykonala nejaká akcia s e-mailami, ktoré sa v nich nachádzajú, stáva sa nočnou morou písať rôzne skripty VBA pre rôzne priečinky. Predstavte si, že máte pod hlavnou schránkou päťsto priečinkov a pre každý z nich je potrebný skript VBA. Používateľ bude musieť pre každý z týchto priečinkov napísať päťsto jedinečných skriptov s podobnou funkcionalitou. A čo je ešte horšie, ak bude potrebné vykonať nejaké úpravy, bude potrebné aktualizovať všetkých päťsto skriptov. Našťastie existuje programovacia metodológia známa ako rekurzia, ktorá náš problém rieši hravo. Myšlienkou rekurzie je, že funkcia opakovane volá samu seba a prechádza rovnakým vzorom znova a znova, aby spracovala všetky položky s rovnakou logikou. Nižšie je uvedený vzorový skript, ktorý začína v hlavnom priečinku schránky a prechádza všetkými podpriečinkami a položkami v každom z týchto priečinkov.

Outlook VBA skript

Nižšie je uvedený kompletný skript 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

Ako spustiť skript

Pre médiá Alt + F11 otvorte editor VBA v programe Outlook a vložte vyššie uvedený kód do priečinka „ThisOutlookSession“. Je dôležité vedieť, že pred spustením tohto skriptu by ste mali do referencií projektu z ponuky „Nástroje“ pridať knižnicu objektov programu Microsoft Outlook XX, kde XX je verzia knižnice.

Pochopte skript

Funkcia rekurzie„ProcessCurrentFolder“ je rekurzívna funkcia, ktorá volá samu seba, ak sa v aktuálnom priečinku objaví podpriečinok. Bude sa naďalej volávať, kým nebudú skenované a spracované všetky priečinky od pôvodnej hierarchie. Tento skript bude fungovať s akýmkoľvek priečinkom Outlooku. „olFolderInbox“ je možné nahradiť „olFolderSentMail“, „olFolderOutbox“ alebo môže byť akýmkoľvek iným nepredvoleným priečinkom Outlooku. Je tiež dôležité vedieť, že nie je potrebné vykonávať počiatočné volanie z koreňového priečinka doručenej alebo odoslanej pošty, ale môže začať pracovať z ľubovoľného priečinka smerom nadol. „For Each objMail In objParentFolder.Items“ je kľúčový riadok, ktorý bude iterovať cez všetky položky obsiahnuté v aktuálnom skenovanom priečinku; preto je to miesto, kam musí používateľ vložiť požadovaný kód na spracovanie položiek.

Zotavte sa z katastrofy

Ak sa stretnete so situáciou, kedy sa Outlook zrúti alebo zlyha, nemusíte sa obávať stratených e-mailov, pretože DataNumen vráti váš život do normálu do oprava korupcie v Outlooku efektívnym spôsobom.

Úvod autora:

Mary Underwood je expertkou na obnovu dát v DataNumen, Inc., ktorá je svetovým lídrom v oblasti technológií obnovy dát, vrátane obnova súborov DWG a rar softvérové ​​produkty na obnovenie. Pre viac informácií navštívte www.datanumen. S

Zdieľať teraz:

Komentáre sú uzavreté.