Si hay subcarpetas dentro de la Bandeja de entrada principal o la carpeta Elementos enviados, cómo recorrerlas de manera recursiva y eficiente, usando VBA, es un consejo muy útil. Esta pieza crítica es reutilizable en muchos otros proyectos de VBA.
El problema crítico de atravesar carpetas
Los usuarios corporativos y comerciales de Outlook a menudo terminan teniendo cientos de subcarpetas debajo de su bandeja de entrada principal o carpeta de elementos enviados, con correos electrónicos relevantes en cada una de ellas. Cuando surge la necesidad de revisar todas esas carpetas para realizar alguna acción en los correos electrónicos que contienen, se convierte en una pesadilla escribir diferentes scripts VBA para diferentes carpetas. Imagínese tener quinientas carpetas debajo de la carpeta Bandeja de entrada principal y un requisito de secuencia de comandos VBA para cada una de ellas. El usuario deberá escribir quinientos scripts únicos para cada una de esas carpetas, con una funcionalidad similar. Para empeorar las cosas, si surge la necesidad de realizar algunas modificaciones, será necesario actualizar los quinientos scripts. Afortunadamente existe una metodología de programación conocida como recursividad, que resuelve nuestro problema como una brisa. La idea de recursividad es que una función se llame a sí misma repetidamente y siga el mismo patrón una y otra vez, para procesar todos los elementos, con la misma lógica. A continuación se muestra una secuencia de comandos de muestra que starts de la carpeta Bandeja de entrada principal y recorre todas las subcarpetas y elementos de cada una de esas carpetas.
Secuencia de comandos de Outlook VBA
A continuación se muestra el script completo de Outlook VBA:
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
Cómo ejecutar el script
Prensa Alt + F11 para abrir el editor de Outlook VBA y pegar el código anterior en "ThisOutlookSession". Es importante saber que antes de ejecutar este script, Microsoft Outlook XX Object library debe agregarse a las referencias del proyecto desde los menús "Herramientas", donde XX es la bibliotecarary versión.
Entender el guión

Recuperarse de un desastre
Si se enfrenta a una situación de bloqueo o falla de Outlook, no hay necesidad de preocuparse por laost correos electrónicos, como DataNumen hará que tu vida vuelva a la normalidad arreglando la corrupción de Outlook de manera eficiente.
Introducción del autor:
Mary Underwood es experta en recuperación de datos en DataNumen, Inc., que es el líder mundial en tecnologías de recuperación de datos, incluyendo dwg recuperación y rar productos de software de recuperación. Para más información visite www.datanumen.com