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 nằm dưới thư mục Hộp thư đến hoặc thư mục Đã gửi chính, với các email liên quan trong mỗi thư mục đó. Khi cần phải duyệt qua tất cả các thư mục đó để thực hiện một số thao tác trên các email chứa trong đó, việc viết các kịch bản VBA khác nhau cho từng thư mục trở nên vô cùng khó khăn. Hãy tưởng tượng có năm trăm thư mục con nằm dưới thư mục Hộp thư đến chính và mỗi thư mục đó cần một kịch bản VBA. Người dùng sẽ phải viết năm trăm kịch bản riêng biệ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 thực hiện một số sửa đổi, tất cả năm trăm kịch bản sẽ cần phải được 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ả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 sẽ liên tục gọi chính nó và lặp lại cùng một mẫu nhiều lần, để 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 bắt đầu từ thư mục Hộp thư đến chính và lặp lại 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 VBA của Outlook 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, thư viện đối tượng Microsoft Outlook XX phải được thêm vào phần tham chiếu của dự án từ menu “Công cụ”, trong đó XX là phiên bản của thư viện.
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ị lỗi hoặc sập, bạn không cần phải lo lắng về việc mất email, vì 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 khôi phục dwg 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