Sekiranya terdapat sub folder dalam folder Inbox atau Item Terkirim utama, bagaimana cara melintasi mereka dengan cara rekursif dan cekap, menggunakan VBA, adalah tip yang sangat berguna. Bahagian kritikal ini boleh digunakan semula dalam banyak projek VBA lain.
Masalah Kritikal Melintasi Folder
Pengguna Outlook korporat dan komersial sering mempunyai beratus-ratus subfolder di bawah peti masuk utama atau folder item yang dihantar, dengan e-mel yang berkaitan dalam setiap folder tersebut. Apabila terdapat keperluan untuk menyemak semua folder tersebut untuk melakukan beberapa tindakan pada e-mel yang terkandung di dalamnya, ia menjadi mimpi ngeri untuk menulis skrip VBA yang berbeza untuk folder yang berbeza. Bayangkan mempunyai lima ratus folder di bawah folder Peti Masuk utama dan keperluan skrip VBA untuk setiap folder tersebut. Pengguna perlu menulis lima ratus skrip unik untuk setiap folder tersebut, dengan fungsi yang serupa. Lebih teruk lagi, jika terdapat keperluan untuk membuat beberapa pengubahsuaian, semua lima ratus skrip perlu dikemas kini. Nasib baik terdapat metodologi pengaturcaraan yang dikenali sebagai rekursi, yang menyelesaikan masalah kita dengan mudah. Idea rekursi adalah untuk fungsi berulang kali memanggil dirinya sendiri dan melalui corak yang sama berulang kali, untuk memproses semua item, dengan logik yang sama. Di bawah ialah skrip contoh yang bermula dari folder Peti Masuk utama dan berulang melalui semua subfolder dan item dalam setiap folder tersebut.
Skrip Outlook VBA
Berikut adalah skrip Outlook VBA yang lengkap:
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
Cara Menjalankan Skrip
Keratan Akhbar Alt + F11 untuk membuka editor Outlook VBA dan tampal kod di atas dalam “ThisOutlookSession”. Adalah penting untuk mengetahui bahawa sebelum menjalankan skrip ini, pustaka Objek Microsoft Outlook XX harus ditambahkan pada rujukan projek daripada menu “Alat”, di mana XX ialah versi pustaka.
Fahami Skripnya

Pulih dari Bencana
Jika anda berhadapan dengan situasi ranap atau kegagalan Outlook, anda tidak perlu risau tentang e-mel yang hilang, kerana DataNumen akan menjadikan hidup anda kembali normal dengan memperbaiki rasuah Outlook dengan cara yang cekap.
Pengenalan Pengarang:
Mary Underwood adalah pakar pemulihan data di DataNumen, Inc., yang merupakan pemimpin dunia dalam teknologi pemulihan data, termasuk pemulihan dwg dan rar produk perisian pemulihan. Untuk maklumat lebih lanjut, lawati www.datanumen.com