Ako postoje podfascikle unutar glavnog foldera Inbox ili Sent Items, vrlo je koristan savjet kako ih preći na rekurzivan i efikasan način, koristeći VBA. Ovaj kritični dio se može ponovo koristiti u mnogim drugim VBA projektima.
Kritični problem prelaska preko foldera
Korporativni i komercijalni korisnici Outlooka često imaju stotine podmapa ispod glavne mape pristigle pošte ili mape poslanih stavki, s relevantnim e-porukama u svakoj od njih. Kada se pojavi potreba za pregledavanjem svih tih mapa kako bi se izvršila neka radnja na e-porukama koje se u njima nalaze, pisanje različitih VBA skripti za različite mape postaje noćna mora. Zamislite da imate petsto mapa ispod glavne mape pristigle pošte i zahtjev za VBA skriptom za svaku od njih. Korisnik će morati napisati petsto jedinstvenih skripti za svaku od tih mapa, sa sličnom funkcionalnošću. Da stvar bude gora, ako se pojavi potreba za nekim izmjenama, svih petsto skripti će se morati ažurirati. Srećom, postoji metodologija programiranja poznata kao rekurzija, koja rješava naš problem kao povjetarac. Ideja rekurzije je da funkcija više puta poziva samu sebe i prolazi kroz isti obrazac iznova i iznova, kako bi obradila sve stavke, istom logikom. Ispod je primjer skripte koji počinje od glavne mape pristigle pošte i prolazi kroz sve podmape i stavke u svakoj od tih mapa.
Outlook VBA skripta
Ispod je kompletna Outlook VBA skripta:
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
Kako pokrenuti skriptu
pritisnuti Alt + F11 Da biste otvorili Outlook VBA editor i zalijepili gornji kod u "ThisOutlookSession". Važno je znati da prije pokretanja ovog skripta, biblioteka objekata Microsoft Outlook XX treba biti dodana u reference projekta iz menija "Alati", gdje je XX verzija biblioteke.
Razumjeti skriptu

Oporavi se od katastrofe
Ako se suočite sa situacijom pada ili kvara Outlooka, nema potrebe da brinete o izgubljenim e-porukama, jer DataNumen će vam vratiti život u normalu popravljanje oštećenja Outlooka na efikasan način.
Uvod za autora:
Mary Underwood je stručnjakinja za oporavak podataka DataNumen, Inc., koji je svjetski lider u tehnologijama za oporavak podataka, uključujući oporavak dwg datoteka i rar softverski proizvodi za oporavak. Za više informacija posjetite www.datanumen.com