Jak rekurencyjnie przechodzić przez drzewo folderów w programie Outlook za pośrednictwem języka VBA

Podziel się teraz:

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

Drzewo folderów w programie OutlookKorporacyjni 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

Funkcja rekurencyjna„ProcessCurrentFolder” to funkcja rekurencyjna, która wywołuje samą siebie, jeśli w bieżącym folderze zostanie wykryty podfolder. Będzie się przywoływał, chyba że wszystkie folderytarting od początkowego hierarchy są skanowane i przetwarzane. Ten skrypt będzie działał z każdym folderem programu Outlook. „OlFolderInbox” można zastąpić „olFolderSentMail”, „olFolderOutbox” lub dowolnym innym folderem Outlooka innym niż domyślny. Ważne jest również, aby wiedzieć, że nie jest konieczne wykonywanie pierwszego połączenia z głównej skrzynki odbiorczej lub folderu skrzynki nadawczej, ale możnatarpraca od dowolnego folderu w dół. „For Each objMail In objParentFolder.Items” to kluczowa linia, która będzie iterować przez wszystkie elementy zawarte w aktualnie skanowanym folderze; dlatego jest to miejsce, w którym użytkownik musi wprowadzić wymagany kod do przetworzenia pozycji.

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

Podziel się teraz:

Możliwość dodawania komentarzy nie jest dostępna.