Cara Melintasi Pokok Folder Secara Berurutan di Outlook melalui VBA

Kongsi Sekarang:

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

Pokok Folder Dalam OutlookPengguna 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

Fungsi Rekursi"ProcessCurrentFolder" ialah fungsi rekursif, yang memanggil dirinya sendiri, jika subfolder ditemui dalam folder semasa. Ia akan terus memanggil dirinya sendiri melainkan semua folder bermula dari hierarki awal diimbas dan diproses. Skrip ini akan berfungsi dengan mana-mana folder Outlook. "olFolderInbox" boleh digantikan dengan "olFolderSentMail", "olFolderOutbox", atau boleh menjadi mana-mana folder Outlook bukan lalai yang lain. Adalah juga penting untuk mengetahui bahawa tidak perlu membuat panggilan awal dari folder peti masuk atau peti keluar root tetapi ia boleh mula berfungsi dari mana-mana folder ke bawah. "For Each objMail In objParentFolder.Items" ialah baris kekunci yang akan berulang melalui semua item yang terkandung dalam folder semasa yang diimbas; oleh itu, di situlah pengguna perlu meletakkan kod yang diperlukan untuk memproses item tersebut.

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

Kongsi Sekarang:

Ruangan komen telah ditutup.