如何通過 VBA 在 Outlook 中遞歸遍歷文件夾樹

立即分享:

如果主 Inbox 或 Sent Items 文件夾中有子文件夾,如何使用 VBA 以遞歸和有效的方式遍歷它們是一個非常有用的技巧。 這個關鍵部分可以在許多其他 VBA 項目中重用。

遍歷文件夾的關鍵問題

Outlook 中的文件夾樹Outlook 的企業和商業用戶通常會在主收件匣或已傳送郵件資料夾下方建立數百個子資料夾,每個子資料夾裡都存放著相關的郵件。當需要遍歷所有這些資料夾並對其中的郵件執行某些操作時,為不同的資料夾編寫不同的 VBA 腳本簡直是一場噩夢。想像一下,如果主收件匣資料夾下有五百個資料夾,並且每個資料夾都需要一個 VBA 腳本,使用者就必須為每個資料夾編寫五百個功能類似的腳本。更糟的是,如果需要進行一些修改,所有五百個腳本都需要更新。幸運的是,有一種名為遞歸的程式設計方法可以輕鬆解決這個問題。遞歸的想法是讓一個函數反覆呼叫自身,一遍又一遍地重複相同的模式,從而使用相同的邏輯處理所有郵件。以下是一個範例腳本,它從主收件匣資料夾開始,遍歷所有子資料夾及其中的郵件。

Outlook VBA腳本

以下是完整的Outlook VBA腳本:

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

如何運行腳本

媒體中心 Alt + F11鍵 開啟 Outlook VBA 編輯器,並將上述程式碼貼到「ThisOutlookSession」中。需要注意的是,在執行此腳本之前,必須從「工具」功能表將 Microsoft Outlook XX 物件庫新增至專案參考中,其中 XX 為庫版本。

了解腳本

遞歸函數「ProcessCurrentFolder」是一個遞歸函數,當在目前資料夾內發現子資料夾時,它會呼叫自身。它會不斷呼叫自身,直到掃描並處理完從初始層級開始的所有資料夾。此腳本適用於任何Outlook資料夾。 「olFolderInbox」可以替換為「olFolderSentMail」、「olFolderOutbox」或任何其他非預設的Outlook資料夾。需要注意的是,無需從根收件匣或寄件匣資料夾進行初始調用,它可以從任何資料夾向下執行。 「For Each objMail In objParentFolder.Items」是關鍵程式碼行,它會遍歷目前掃描資料夾中的所有項目;因此,使用者需要在此處編寫處理項目所需的程式碼。

從災難中恢復

如果遇到 Outlook 崩潰或故障的情況,不必擔心郵件遺失,因為 DataNumen 將使您的生活恢復正常 修復 Outlook 損壞 以一種有效的方式。

作者簡介:

瑪麗·安德伍德(Mary Underwood)是 DataNumen,Inc.是數據恢復技術的全球領導者,包括 dwg恢復 以及 rar 恢復軟件產品。 欲了解更多信息,請訪問 萬維網。datanumen.COM

立即分享:

評論被關閉。