VBA aracılığıyla Outlook'ta Bir Klasör Ağacını Yinelemeli Olarak Gezdirme

Şimdi paylaş:

Ana Gelen Kutusu veya Gönderilmiş Öğeler klasöründe alt klasörler varsa, bunları VBA kullanarak yinelemeli ve verimli bir şekilde nasıl geçeceğiniz çok yararlı bir ipucudur. Bu kritik parça, diğer birçok VBA projesinde yeniden kullanılabilir.

Klasörleri Gezmenin Kritik Problemi

Outlook'ta Klasör AğacıOutlook'un kurumsal ve ticari kullanıcıları genellikle ana gelen kutusu veya gönderilen öğeler klasörünün altında, her birinde ilgili e-postalar bulunan yüzlerce alt klasöre sahip olurlar. Bu klasörlerin tümünü tek tek inceleyip içerdikleri e-postalar üzerinde bir işlem yapılması gerektiğinde, farklı klasörler için farklı VBA komut dosyaları yazmak bir kabusa dönüşür. Ana Gelen Kutusu klasörünün altında beş yüz klasörünüz olduğunu ve her biri için bir VBA komut dosyasına ihtiyacınız olduğunu düşünün. Kullanıcı, benzer işlevselliğe sahip beş yüz farklı komut dosyası yazmak zorunda kalacaktır. Daha da kötüsü, bazı değişiklikler yapılması gerektiğinde, beş yüz komut dosyasının tamamının güncellenmesi gerekecektir. Neyse ki, sorunumuzu kolayca çözen özyinelemeli bir programlama yöntemi vardır. Özyineleme fikri, bir fonksiyonun kendisini tekrar tekrar çağırması ve tüm öğeleri aynı mantıkla işlemek için aynı deseni tekrar tekrar izlemesidir. Aşağıda, ana Gelen Kutusu klasöründen başlayıp tüm alt klasörleri ve bu klasörlerin her birindeki öğeleri yineleyen örnek bir komut dosyası bulunmaktadır.

Outlook VBA Komut Dosyası

Aşağıda eksiksiz Outlook VBA komut dosyası bulunmaktadır:

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

Komut Dosyası Nasıl Çalıştırılır

Basın Alt + F11 Outlook VBA düzenleyicisini açın ve yukarıdaki kodu “ThisOutlookSession” içine yapıştırın. Bu betiği çalıştırmadan önce, “Araçlar” menüsünden Microsoft Outlook XX Nesne kitaplığının proje referanslarına eklenmesi gerektiğini bilmek önemlidir; burada XX kitaplık sürümünü temsil eder.

Komut Dosyasını Anlayın

Özyineleme İşlevi“ProcessCurrentFolder”, geçerli klasör içinde bir alt klasör bulunduğunda kendini çağıran özyinelemeli bir fonksiyondur. İlk hiyerarşiden başlayarak tüm klasörler taranıp işlenene kadar kendini çağırmaya devam edecektir. Bu komut dosyası herhangi bir Outlook klasörüyle çalışır. “olFolderInbox” yerine “olFolderSentMail”, “olFolderOutbox” veya varsayılan olmayan herhangi bir Outlook klasörü kullanılabilir. Ayrıca, ilk çağrının kök gelen kutusu veya giden kutusu klasöründen yapılması gerekmediğini, herhangi bir klasörden aşağı doğru çalışmaya başlayabileceğini bilmek de önemlidir. “For Each objMail In objParentFolder.Items” satırı, taranan geçerli klasördeki tüm öğeler arasında yineleme yapacak olan anahtar satırdır; bu nedenle, kullanıcının öğeleri işlemek için gerekli kodu buraya koyması gerekir.

Felaketten Kurtulmak

Outlook'un çökmesi veya arızalanması gibi bir durumla karşılaşırsanız, e-postalarınızın kaybolması konusunda endişelenmenize gerek yok, çünkü DataNumen tarafından hayatınızı normale döndürecektir. Outlook bozulmasını düzeltme verimli bir şekilde.

Yazar Tanıtımı:

Mary Underwood, veri kurtarma uzmanıdır. DataNumendahil olmak üzere veri kurtarma teknolojilerinde dünya lideri olan , Inc. dwg kurtarma hem de rar kurtarma yazılımı ürünleri. Daha fazla bilgi için ziyaret edin www.datanumen.com

Şimdi paylaş:

Yoruma kapalı.