Como percorrer uma árvore de pastas recursivamente no Outlook via VBA

Compartilhe agora:

Se houver subpastas na caixa de entrada principal ou na pasta de itens enviados, como percorrê-las de maneira recursiva e eficiente, usando o VBA, é uma dica muito útil. Esta parte crítica é reutilizável em muitos outros projetos VBA.

O problema crítico de percorrer pastas

Árvore de pastas no OutlookOs usuários corporativos e comerciais do Outlook geralmente acabam tendo centenas de subpastas abaixo da caixa de entrada principal ou da pasta de itens enviados, com e-mails relevantes em cada uma delas. Quando surge a necessidade de percorrer todas essas pastas para executar alguma ação nos e-mails contidos nelas, torna-se um pesadelo escrever diferentes scripts VBA para diferentes pastas. Imagine ter quinhentas pastas abaixo da pasta principal da caixa de entrada e um requisito de script VBA para cada uma delas. O usuário terá que escrever quinhentos scripts exclusivos para cada uma dessas pastas, com funcionalidade semelhante. Para piorar, caso haja a necessidade de fazer alguma modificação, todos os quinhentos scripts deverão ser atualizados. Felizmente, existe uma metodologia de programação conhecida como recursão, que resolve nosso problema rapidamente. A ideia da recursão é que uma função chame a si mesma repetidamente e percorra o mesmo padrão repetidamente, a fim de processar todos os itens, com a mesma lógica. Abaixo está um script de amostra que étarts da pasta Caixa de entrada principal e percorre todas as subpastas e itens em cada uma dessas pastas.

Script VBA do Outlook

Abaixo está o script VBA completo do Outlook:

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

Como executar o script

Imprensa Alt + F11 para abrir o editor VBA do Outlook e colar o código acima em “ThisOutlookSession”. É importante saber que antes de executar este script, Microsoft Outlook XX Object library deve ser adicionado às referências do projeto nos menus “Ferramentas”, onde XX é a library versão.

Entenda o roteiro

Função de Recursão“ProcessCurrentFolder” é a função recursiva, que chama a si mesma, se uma subpasta for descoberta dentro da pasta atual. Ele continuará se recuperando, a menos que todas as pastas stardo arquivo inicialrarchy são digitalizados e processados. Este script funcionará com qualquer pasta do Outlook. “olFolderInbox” pode ser substituído por “olFolderSentMail”, “olFolderOutbox” ou pode ser qualquer outra pasta não padrão do Outlook. Também é importante saber que não é necessário fazer a chamada inicial da pasta de entrada ou caixa de saída raiz, mas pode sertart trabalhando de qualquer pasta para baixo. “For Each objMail In objParentFolder.Items” é a linha-chave que percorrerá todos os itens contidos na pasta atual que está sendo verificada; portanto, esse é o local onde o usuário precisa colocar o código necessário para processar os itens.

Recuperar-se do Desastre

Se você se deparar com uma situação de travamento ou falha do Outlook, não há necessidade de se preocupar com o lost e-mails, como DataNumen deve trazer sua vida de volta ao normal por corrigindo a corrupção do Outlook de uma maneira eficiente.

Introdução do autor:

Mary Underwood é especialista em recuperação de dados em DataNumen, Inc., líder mundial em tecnologias de recuperação de dados, incluindo dwg recuperação e rar produtos de software de recuperação. Para mais informações visite www.datanumen.com

Compartilhe agora:

Comentários estão fechados.