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
Os 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

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