Nếu có các thư mục con trong thư mục Hộp thư đến hoặc Mục đã gửi chính, cách duyệt qua chúng theo cách đệ quy và hiệu quả, sử dụng VBA, là một mẹo rất hữu ích. Phần quan trọng này có thể tái sử dụng trong nhiều dự án VBA khác.
Vấn đề quan trọng của việc duyệt các thư mục
Người dùng doanh nghiệp và thương mại của Outlook thường có hàng trăm thư mục con bên dưới thư mục hộp thư đến hoặc mục đã gửi chính của họ, với các email có liên quan trong mỗi thư mục đó. Khi có nhu cầu xem qua tất cả các thư mục đó để thực hiện một số hành động đối với các email có trong đó, việc viết các tập lệnh VBA khác nhau cho các thư mục khác nhau sẽ trở thành một cơn ác mộng. Hãy tưởng tượng có năm trăm thư mục bên dưới thư mục Hộp thư đến chính và yêu cầu tập lệnh VBA cho mỗi thư mục đó. Người dùng sẽ phải viết năm trăm tập lệnh duy nhất cho mỗi thư mục đó, với chức năng tương tự. Tệ hơn nữa, nếu cần phải thực hiện một số sửa đổi, tất cả năm trăm tập lệnh sẽ được yêu cầu cập nhật. May mắn thay, có một phương pháp lập trình được gọi là đệ quy, giúp giải quyết vấn đề của chúng ta một cách dễ dàng. Ý tưởng của đệ quy là để một hàm liên tục gọi chính nó và lặp đi lặp lại cùng một mẫu để xử lý tất cả các mục, với cùng một logic. Dưới đây là một kịch bản mẫu mà starts từ thư mục Hộp thư đến chính và lặp qua tất cả các thư mục con và các mục trong mỗi thư mục đó.
Tập lệnh Outlook VBA
Dưới đây là tập lệnh Outlook VBA hoàn chỉnh:
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
Cách chạy tập lệnh
Ấn Bản Alt + F11 để mở trình soạn thảo Outlook VBA và dán đoạn mã trên vào “ThisOutlookSession”. Điều quan trọng cần biết là trước khi chạy tập lệnh này, Microsoft Outlook XX Object library nên được thêm vào các tham chiếu dự án từ menu “Công cụ”, trong đó XX là thư việnrarphiên bản y.
Hiểu kịch bản

Phục hồi sau thảm họa
Nếu bạn gặp phải tình huống Outlook bị treo hoặc lỗi, bạn không cần phải lo lắng về lost email, như DataNumen sẽ đưa cuộc sống của bạn trở lại bình thường bằng cách sửa lỗi hỏng Outlook một cách hiệu quả.
Giới thiệu tác giả:
Mary Underwood là một chuyên gia phục hồi dữ liệu trong DataNumen, Inc., công ty hàng đầu thế giới về công nghệ khôi phục dữ liệu, bao gồm dwg phục hồi và rar sản phẩm phần mềm phục hồi. Để biết thêm thông tin, hãy truy cập www.datanumennăm