Hvis der er undermapper i hovedmappen Indbakke eller Sendte emner, er det et meget nyttigt tip, hvordan man går hen til at krydse dem på en rekursiv og effektiv måde ved hjælp af VBA. Dette kritiske stykke kan genbruges i mange andre VBA-projekter.
Det kritiske problem ved at krydse mapper
Virksomheds- og kommercielle brugere af Outlook ender ofte med at have hundredvis af undermapper under deres primære indbakke eller mappe med sendte elementer, med relevante e-mails i hver af disse. Når der er behov for at gennemgå alle disse mapper for at udføre en handling på de e-mails, der er indeholdt i dem, bliver det et mareridt at skrive forskellige VBA-scripts til forskellige mapper. Forestil dig at have fem hundrede mapper under den primære indbakkemappe og et VBA-scriptkrav til hver af disse. Brugeren skal skrive fem hundrede unikke scripts til hver af disse mapper med lignende funktionalitet. For at gøre det værre, hvis der er behov for at foretage nogle ændringer, skal alle fem hundrede scripts opdateres. Heldigvis findes der en programmeringsmetode kendt som rekursion, som løser vores problem som en leg. Ideen bag rekursion er, at en funktion gentagne gange kalder sig selv og gennemgår det samme mønster igen og igen for at behandle alle elementerne med den samme logik. Nedenfor er et eksempelscript, der starter fra den primære indbakkemappe og iterererer gennem alle undermapper og elementer i hver af disse mapper.
Outlook VBA-script
Nedenfor er det komplette Outlook VBA-script:
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
Sådan køres scriptet
Presse Alt + F11 for at åbne Outlook VBA-editoren og indsætte ovenstående kode i "ThisOutlookSession". Det er vigtigt at vide, at før dette script køres, skal Microsoft Outlook XX-objektbiblioteket tilføjes til projektreferencerne fra menuerne "Værktøjer", hvor XX er biblioteksversionen.
Forstå scriptet

Gendan efter katastrofe
Hvis du står over for en situation med Outlook-nedbrud eller -fejl, er der ingen grund til at bekymre sig om mistede e-mails, da DataNumen skal bringer dit liv tilbage til det normale ved rettelse af korruption i Outlook på en effektiv måde.
Forfatter Introduktion:
Mary Underwood er ekspert i datagendannelse i DataNumen, Inc., som er verdens førende inden for datagendannelsesteknologier, herunder dwg-gendannelse og rar produkter til gendannelsessoftware. For mere information besøg www.datanumen.com