如果主 Inbox 或 Sent Items 文件夾中有子文件夾,如何使用 VBA 以遞歸和有效的方式遍歷它們是一個非常有用的技巧。 這個關鍵部分可以在許多其他 VBA 項目中重用。
遍歷文件夾的關鍵問題
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 為庫版本。
了解腳本

從災難中恢復
如果遇到 Outlook 崩潰或故障的情況,不必擔心郵件遺失,因為 DataNumen 將使您的生活恢復正常 修復 Outlook 損壞 以一種有效的方式。
作者簡介:
瑪麗·安德伍德(Mary Underwood)是 DataNumen,Inc.是數據恢復技術的全球領導者,包括 dwg恢復 以及 rar 恢復軟件產品。 欲了解更多信息,請訪問 萬維網。datanumen.COM