Als er submappen zijn in de hoofdinbox of de map Verzonden items, is hoe u deze op een recursieve en efficiënte manier kunt doorlopen met VBA, een zeer nuttige tip. Dit cruciale stuk is herbruikbaar in veel andere VBA-projecten.
Het kritieke probleem van het doorlopen van mappen
Zakelijke gebruikers van Outlook hebben vaak honderden submappen onder hun hoofdmap 'Postvak In' of 'Verzonden items', met daarin relevante e-mails. Wanneer het nodig is om al die mappen te doorlopen en een actie uit te voeren op de e-mails daarin, wordt het schrijven van verschillende VBA-scripts voor elke map een ware nachtmerrie. Stel je voor dat je vijfhonderd mappen hebt onder de hoofdmap 'Postvak In' en voor elk daarvan een VBA-script nodig hebt. De gebruiker zou dan vijfhonderd unieke scripts moeten schrijven voor elk van die mappen, met dezelfde functionaliteit. En alsof dat nog niet erg genoeg is, moeten al die vijfhonderd scripts worden bijgewerkt als er wijzigingen nodig zijn. Gelukkig is er een programmeermethode genaamd recursie die dit probleem in een handomdraai oplost. Het idee achter recursie is dat een functie zichzelf herhaaldelijk aanroept en steeds hetzelfde patroon doorloopt om alle items met dezelfde logica te verwerken. Hieronder staat een voorbeeldscript dat begint bij de hoofdmap 'Postvak In' en alle submappen en items in die mappen doorloopt.
Outlook VBA-script
Hieronder vindt u het volledige 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
Hoe het script uit te voeren
Druk op Alt + F11 Open de Outlook VBA-editor en plak de bovenstaande code in "ThisOutlookSession". Het is belangrijk om te weten dat voordat u dit script uitvoert, de Microsoft Outlook XX-objectbibliotheek moet worden toegevoegd aan de projectverwijzingen via het menu "Extra", waarbij XX het bibliotheekversienummer is.
Begrijp het script

Herstel van een ramp
Mocht Outlook vastlopen of niet meer werken, dan hoeft u zich geen zorgen te maken over verloren e-mails. DataNumen zal je leven weer normaal maken door het oplossen van Outlook-corruptie op een efficiënte manier.
Auteur Introductie:
Mary Underwood is een expert op het gebied van gegevensherstel in DataNumen, Inc., de wereldleider in technologieën voor gegevensherstel, waaronder dwg-herstel en rar herstelsoftwareproducten. Voor meer informatie bezoek www.datanumen.com