Om det finns undermappar i huvudmappen Inbox eller Sent Items, är det ett mycket användbart tips hur man går igenom dem på ett rekursivt och effektivt sätt med hjälp av VBA. Den här kritiska delen kan återanvändas i många andra VBA-projekt.
Det kritiska problemet med att korsa mappar
Företags- och kommersiella användare av Outlook har ofta hundratals undermappar under huvudinkorgen eller mappen skickade objekt, med relevanta e-postmeddelanden i var och en av dem. När det finns ett behov av att gå igenom alla dessa mappar för att utföra några åtgärder på e-postmeddelandena i dessa blir det en mardröm att skriva olika VBA-skript för olika mappar. Föreställ dig att du har fem hundra mappar under huvudmappen Inkorgen och ett VBA-skriptkrav för var och en av dem. Användaren måste skriva fem hundra unika skript för var och en av dessa mappar, med liknande funktionalitet. För att göra det värre, om det finns behov av att göra några ändringar, måste alla fem hundra skript uppdateras. Lyckligtvis finns det en programmeringsmetod som kallas rekursion, som löser vårt problem som en vind. Tanken med rekursion är att en funktion upprepade gånger ska ringa sig själv och gå igenom samma mönster om och om igen för att bearbeta alla objekt med samma logik. Nedan följer ett exempel på skript som ärtarts från huvudmappen för inkorg och det går igenom alla undermappar och objekt i var och en av dessa mappar.
Outlook VBA-skript
Nedan är det fullständiga Outlook VBA-skriptet:
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
Hur man kör skriptet
Klicka Alt + F11 för att öppna Outlook VBA-redigeraren och klistra in koden ovan i “ThisOutlookSession”. Det är viktigt att veta att Microsoft Outlook XX Object lib innan du kör detta skriptrary bör läggas till i projektreferenser från "Verktyg" -menyer, där XX är library-version.
Förstå skriptet

Återställ från katastrof
Om du står inför en situation med Outlook-krasch eller fel, behöver du inte oroa dig för lost e-postmeddelanden, som DataNumen ska återför ditt liv till det normala av fixa korruption i Outlook på ett effektivt sätt.
Författarintroduktion:
Mary Underwood är en dataåtervinningsexpert i DataNumen, Inc., som är världsledande inom teknik för återställning av data, inklusive dwg återvinning och rar återställningsprogramvaruprodukter. För mer information besök www.datanumen.com