Jeśli w głównym folderze Skrzynka odbiorcza lub w folderze Elementy wysłane znajdują się podfoldery, bardzo przydatną wskazówką jest sposób przechodzenia przez nie w sposób rekurencyjny i efektywny przy użyciu języka VBA. Ten krytyczny element można ponownie wykorzystać w wielu innych projektach VBA.
Krytyczny problem przechodzenia przez foldery
Korporacyjni i komercyjni użytkownicy Outlooka często mają setki podfolderów pod główną skrzynką odbiorczą lub folderem wysłanych elementów, a w każdym z nich znajdują się odpowiednie wiadomości e-mail. Kiedy pojawia się potrzeba przejrzenia wszystkich tych folderów, aby wykonać jakąś czynność na zawartych w nich wiadomościach e-mail, pisanie różnych skryptów VBA dla różnych folderów staje się koszmarem. Wyobraź sobie pięćset folderów pod głównym folderem skrzynki odbiorczej i wymaganie skryptu VBA dla każdego z nich. Użytkownik będzie musiał napisać pięćset unikalnych skryptów dla każdego z tych folderów o podobnej funkcjonalności. Co gorsza, jeśli zajdzie potrzeba wprowadzenia pewnych modyfikacji, wszystkich pięćset skryptów będzie wymagało aktualizacji. Na szczęście istnieje metodologia programowania znana jako rekurencja, która błyskawicznie rozwiązuje nasz problem. Idea rekursji polega na tym, że funkcja wielokrotnie wywołuje samą siebie i przechodzi przez ten sam wzorzec raz po raz, aby przetworzyć wszystkie elementy z tą samą logiką. Poniżej znajduje się przykładowy skrypt, który starts z głównego folderu Skrzynki odbiorczej i iteruje przez wszystkie podfoldery i elementy w każdym z tych folderów.
Skrypt VBA programu Outlook
Poniżej znajduje się pełny skrypt VBA programu Outlook:
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
Jak uruchomić skrypt
Naciśnij przycisk Alt + F11 aby otworzyć edytor VBA programu Outlook i wklej powyższy kod w „ThisOutlookSession”. Ważne jest, aby wiedzieć, że przed uruchomieniem tego skryptu plik Microsoft Outlook XX Object library należy dodać do odniesień do projektu z menu „Narzędzia”, gdzie XX to bibliotekararwersja y.
Zrozum skrypt

Odzyskaj po katastrofie
Jeśli napotkasz awarię lub awarię programu Outlook, nie musisz martwić się o plik lost e-maile, jako DataNumen przywróci twoje życie do normy przez naprawianie korupcji programu Outlook w efektywny sposób.
Wprowadzenie autora:
Mary Underwood jest ekspertem w dziedzinie odzyskiwania danych DataNumen, Inc., która jest światowym liderem w technologiach odzyskiwania danych, w tym dwg regeneracja i rar oprogramowanie do odzyskiwania. po więcej informacji odwiedź www.datanumen.com