Hvis det er undermapper i hovedinnboksen eller mappen Sendte elementer, er det et veldig nyttig tips hvordan du kan gå gjennom dem på en rekursiv og effektiv måte ved å bruke VBA. Denne kritiske delen kan gjenbrukes i mange andre VBA-prosjekter.
Det kritiske problemet med å krysse mapper
Bedrifts- og kommersielle brukere av Outlook ender ofte opp med hundrevis av undermapper under hovedinnboksen eller mappen for sendte elementer, med relevante e-poster i hver av disse. Når det oppstår behov for å gå gjennom alle disse mappene for å utføre en handling på e-postene i dem, blir det et mareritt å skrive forskjellige VBA-skript for forskjellige mapper. Tenk deg å ha fem hundre mapper under hovedinnboksmappen og et VBA-skriptkrav for hver av disse. Brukeren må skrive fem hundre unike skript for hver av disse mappene, med lignende funksjonalitet. For å gjøre det verre, hvis det oppstår behov for å gjøre noen endringer, må alle fem hundre skript oppdateres. Heldigvis finnes det en programmeringsmetode kjent som rekursjon, som løser problemet vårt som en lek. Ideen bak rekursjon er at en funksjon gjentatte ganger kaller seg selv og går gjennom det samme mønsteret igjen og igjen, for å behandle alle elementene, med samme logikk. Nedenfor er et eksempelskript som starter fra hovedinnboksmappen og iterererer gjennom alle undermappene og elementene i hver av disse mappene.
Outlook VBA-skript
Nedenfor er det komplette 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
Hvordan kjøre skriptet
Press Alt + F11 for å åpne Outlook VBA-editoren og lime inn koden ovenfor i «ThisOutlookSession». Det er viktig å vite at før du kjører dette skriptet, bør Microsoft Outlook XX-objektbiblioteket legges til prosjektreferansene fra «Verktøy»-menyene, der XX er bibliotekversjonen.
Forstå manuset

Kom deg etter katastrofe
Hvis du står overfor en situasjon med Outlook-krasj eller -feil, trenger du ikke å bekymre deg for tapte e-poster, ettersom DataNumen skal bringe livet ditt tilbake til det normale ved fikse korrupsjon i Outlook på en effektiv måte.
Forfatterintroduksjon:
Mary Underwood er en datagjenopprettingsekspert innen DataNumen, Inc., som er verdensledende innen datagjenopprettingsteknologier, inkludert dwg-gjenoppretting og rar programvare for gjenoppretting. For mer informasjon besøk www.datanumen. Med