Cómo atravesar un árbol de carpetas de forma recursiva en Outlook a través de VBA

Comparte ahora:

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

Árbol de carpetas en OutlookLos 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

Función de recursividad“ProcessCurrentFolder” es la función recursiva, que se llama a sí misma, si se descubre una subcarpeta dentro de la carpeta actual. Seguirá recuperándose a sí mismo a menos que todas las carpetas esténtarting de hie inicialrarchy se escanean y procesan. Este script funcionará con cualquier carpeta de Outlook. “OlFolderInbox” se puede reemplazar con “olFolderSentMail”, “olFolderOutbox” o puede ser cualquier otra carpeta de Outlook no predeterminada. También es importante saber que no es necesario realizar la llamada inicial desde la bandeja de entrada raíz o la carpeta de la bandeja de salida, pero puedetart trabajando desde cualquier carpeta hacia abajo. "Para cada objMail en objParentFolder.Items" es la línea clave que recorrerá todos los elementos contenidos en la carpeta actual que se está escaneando; por lo tanto, ese es el lugar donde el usuario debe ingresar el código requerido para procesar los artículos.

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

Comparte ahora:

Los comentarios están cerrados.