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 å ha hundrevis av undermapper under hovedinnboksen eller mappen for sendte elementer, med relevante e-poster i hver av disse. Når det kommer et behov for å gå gjennom alle disse mappene for å utføre en handling på e-postene i disse, blir det et mareritt å skrive forskjellige VBA-skript for forskjellige mapper. Tenk deg å ha fem hundre mapper under hovedinnboksen 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 er behov for å gjøre noen modifikasjoner, vil alle fem hundre skript bli pålagt å bli oppdatert. Heldigvis finnes det en programmeringsmetodikk kjent som rekursjon, som løser problemet vårt som en lek. Ideen med rekursjon er at en funksjon gjentatte ganger skal kalle seg selv og gå gjennom det samme mønsteret igjen og igjen, for å behandle alle elementene, med samme logikk. Nedenfor er et eksempelskript som starts fra hovedinnboksen og går 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 lim inn koden ovenfor i "ThisOutlookSession". Det er viktig å vite at før du kjører dette skriptet, skal Microsoft Outlook XX Object library skal legges til prosjektreferansene fra "Verktøy"-menyene, der XX er library versjon.
Forstå manuset

Kom deg etter katastrofe
Hvis du står overfor en situasjon med Outlook-krasj eller feil, er det ingen grunn til å bekymre deg for lost e-poster, som 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 utvinning og rar programvare for gjenoppretting. For mer informasjon besøk www.datanumen. Med