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
Firemní 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

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