Wenn es Unterordner im Hauptordner „Posteingang“ oder „Gesendete Objekte“ gibt, ist es ein sehr nützlicher Tipp, wie man diese mithilfe von VBA rekursiv und effizient durchläuft. Dieser wichtige Teil kann in vielen anderen VBA-Projekten wiederverwendet werden.
Das kritische Problem des Durchlaufens von Ordnern
Outlook-Nutzer in Unternehmen und im gewerblichen Bereich haben oft Hunderte von Unterordnern unterhalb ihres Posteingangs oder des Ordners „Gesendete Objekte“, die jeweils relevante E-Mails enthalten. Wenn man all diese Ordner durchsuchen muss, um eine bestimmte Aktion mit den darin enthaltenen E-Mails durchzuführen, wird das Schreiben separater VBA-Skripte für jeden Ordner schnell zum Albtraum. Stellen Sie sich vor, Sie haben 500 Ordner unterhalb des Posteingangs und benötigen für jeden davon ein VBA-Skript. Der Benutzer müsste 500 individuelle Skripte mit ähnlicher Funktionalität schreiben. Erschwerend kommt hinzu, dass bei Änderungen alle 500 Skripte aktualisiert werden müssen. Glücklicherweise gibt es eine Programmiermethode namens Rekursion, die unser Problem mühelos löst. Die Idee der Rekursion besteht darin, dass sich eine Funktion wiederholt selbst aufruft und dasselbe Muster immer wieder durchläuft, um alle Elemente mit derselben Logik zu verarbeiten. Im Folgenden finden Sie ein Beispielskript, das mit dem Posteingang beginnt und alle Unterordner und Elemente in jedem dieser Ordner durchläuft.
Outlook VBA-Skript
Unten finden Sie das vollständige Outlook VBA-Skript:
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
So führen Sie das Skript aus
Presse Alt + F11 Öffnen Sie den Outlook-VBA-Editor und fügen Sie den obigen Code in „ThisOutlookSession“ ein. Wichtig: Vor der Ausführung dieses Skripts muss die Microsoft Outlook XX-Objektbibliothek über das Menü „Tools“ zu den Projektverweisen hinzugefügt werden, wobei XX die Bibliotheksversion angibt.
Verstehe das Skript

Erholen Sie sich von der Katastrophe
Sollte Outlook abstürzen oder ausfallen, brauchen Sie sich keine Sorgen um verlorene E-Mails zu machen, denn DataNumen soll Ihr Leben wieder normalisieren Beheben von Outlook-Beschädigungen auf effiziente Weise.
Einführung des Autors:
Mary Underwood ist eine Datenrettungsexpertin in DataNumen, Inc., das weltweit führend bei Datenwiederherstellungstechnologien ist, einschließlich DWG-Wiederherstellung und rar Wiederherstellungssoftwareprodukte. Für weitere Informationen besuchen Sie www.datanumen.com €XNUMX