Buscar..


Introducción

Primera parte de una introducción a las tiendas y las carpetas que contienen. Contiene macros para mostrar (1) los nombres de las tiendas accesibles y (2) los nombres de las tiendas accesibles y las carpetas de nivel superior dentro de ellas.

2.1 Conocimiento previo esperado

  • Usted es un usuario de Outlook y comprende términos como "correo electrónico", "hora recibida", "asunto" y "Panel de carpetas".
  • Sabes cómo acceder al Editor de Visual Basic de Outlook y crear un módulo. Ver Introducción Parte 1 si es necesario.
  • Tienes al menos un conocimiento básico de VBA. Declaro las subrutinas y las variables sin explicación. Uso Withs, Ifs y Loops sin explicación. Te digo que algo es una colección. Le digo que copie el código a un módulo y lo ejecute. Hay muchos tutoriales en línea, aunque la mayoría son para Excel VBA y se concentran más en usar el lenguaje con Excel que en el lenguaje. Al buscar el "tutorial de VBA" se muestran algunos que se concentran en el idioma más que en la aplicación que parece satisfactoria.
  • No es necesario que conozca el modelo de objetos de Outlook; Este tutorial te presenta una pequeña parte de él.

2.2 tiendas

Outlook almacena correos electrónicos, elementos de calendario, notas, tareas, etc. en archivos conocidos como Tiendas . Si miras el panel de carpetas, verás algo como:

Aaaaaaaaaa
  Inbox
  Drafts
  Deleted Items
  :  :

Bbbbbbbbbb
  Inbox
  Drafts
  Deleted Items
  :  :

Cccccccccc
:  :

"Aaaaaaaaaa", "Bbbbbbbbbb" y "Ccccccccccc" son los nombres de usuario o de visualización de las tiendas. Siempre he aceptado los valores predeterminados de Outlook para estos nombres que han cambiado con los años. Una vez que el valor predeterminado era mi nombre ahora es mi dirección de correo electrónico. El nombre de archivo para estas tiendas puede ser el mismo pero con una extensión como PST u OST o puede ser algo completamente diferente. Una macro de VBA necesita el nombre de usuario para acceder a una tienda y no se preocupa por los nombres de archivo o la extensión.

Puedes tener tantas tiendas como desees. Tengo el "archivo de datos de Outlook" que se creó cuando instalé Outlook. Cuando agregué cuentas para mis direcciones de correo electrónico, Outlook creó nuevas tiendas con el nombre de la dirección de correo electrónico como "[email protected]" y "[email protected]". Para reducir el tamaño de mi tienda principal, guardo correos electrónicos antiguos en tiendas con nombres como "Archivo 2015".

Si es un usuario comercial, puede tener acceso a tiendas compartidas o a tiendas de colegas.

Las macros a continuación muestran tres formas diferentes de enumerar las tiendas a las que puede acceder. Le sugiero que cree un nuevo módulo para mantener el código a continuación y que use F4 para acceder a las propiedades del módulo, de modo que pueda llamarlo "ModIntro" o algún otro nombre de su elección. Si completó la Parte 1 de esta serie, ya tendrá dicho módulo.

Copie estas macros en un módulo y pruebe que cada una de ellas dé el mismo resultado.

Sub ListStores1()

  Dim InxStoreCrnt As Integer
  Dim NS As NameSpace
  Dim StoresColl As Folders

  Set NS = CreateObject("Outlook.Application").GetNamespace("MAPI")
  Set StoresColl = NS.Folders

  For InxStoreCrnt = 1 To StoresColl.Count
    Debug.Print StoresColl(InxStoreCrnt).Name
  Next

End Sub
Sub ListStores2()
 
 Dim StoresColl As Stores
 Dim StoreCrnt As Store
 
 Set StoresColl = Session.Stores
 
 For Each StoreCrnt In StoresColl
   Debug.Print StoreCrnt.DisplayName
 Next
 
End Sub
Sub ListStores3()

  Dim InxStoreCrnt As Long

  With Application.Session
    For InxStoreCrnt = 1 To .Folders.Count
      Debug.Print .Folders(InxStoreCrnt).Name
    Next
  End With

End Sub

Encontrará con VBA que a menudo hay varios métodos para lograr el mismo efecto. Arriba he mostrado tres métodos de acceso a las tiendas. No es necesario que los recuerde todos, elija su propio favorito, pero debe tener en cuenta que existen varios métodos porque otras personas, cuyo código debe estudiar, tendrán diferentes favoritos.

Las variables StoresColl en las macros ListStores1() y ListStores2() son colecciones pero tienen diferentes tipos de objetos: Store y Folder . Un objeto de Store solo puede hacer referencia a un archivo en su disco. Una Folder puede hacer referencia a un archivo en el disco, pero también puede hacer referencia a carpetas dentro de una tienda como "Bandeja de entrada" y "Elementos enviados". Stores , las Folders , la Store y la Folder forman parte del modelo de objetos de Outlook. Esta serie de tutoriales le presenta el modelo, pero no es una definición formal. Si desea una definición formal, escriba "outlook vba object model" en su motor de búsqueda favorito. Asegúrese de mirar la versión VBA del modelo.

2.3 Carpetas de nivel superior

En el ejemplo de mi Panel de carpetas anterior, solo enumero tres carpetas estándar: "Bandeja de entrada", "Borradores" y "Elementos eliminados". Hay otras carpetas estándar y puede crear tantas carpetas como desee. Algunas personas crean carpetas en la Bandeja de entrada, pero prefiero crear nuevas carpetas al mismo nivel que la Bandeja de entrada. Sus carpetas pueden tener subcarpetas que pueden tener sus propias subcarpetas a cualquier profundidad.

La siguiente macro producirá una lista del formulario:

A
   A1
   A2
   A3
B
   B1
   B2
C
   C1
   C2
   C3
   C4

donde A, B y C son tiendas y A1, B1, C1, etc., son carpetas dentro de A, B y C. Si A1, B1, C1 y demás tienen subcarpetas, esta macro no las incluirá en la lista. El acceso a carpetas más profundamente anidadas se tratará en la siguiente parte de este tutorial.

Sub ListStoresAndTopLevelFolders()

  Dim FldrCrnt As Folder
  Dim InxFldrCrnt As Long
  Dim InxStoreCrnt As Long
  Dim StoreCrnt As Folder

  With Application.Session
    For InxStoreCrnt = 1 To .Folders.Count
      Set StoreCrnt = .Folders(InxStoreCrnt)
      With StoreCrnt
        Debug.Print .Name
        For InxFldrCrnt = .Folders.Count To 1 Step -1
          Set FldrCrnt = .Folders(InxFldrCrnt)
          With FldrCrnt
            Debug.Print "   " & .Name
          End With
        Next
      End With
    Next
  End With

End Sub

2.4 Lo que debes recordar de este tutorial

  • Una tienda es un archivo en el que Outlook almacena correos electrónicos, elementos del calendario, notas, tareas, etc.
  • Una tienda puede contener carpetas estándar de Outlook como "Bandeja de entrada" y "Elementos enviados".
  • Una tienda también puede contener carpetas creadas por el usuario.
  • Tanto las carpetas estándar de Outlook como las carpetas creadas por el usuario pueden contener subcarpetas creadas por el usuario, subcarpetas, etc., a cualquier profundidad.
  • Cómo listar tiendas.
  • Cómo enumerar las tiendas y las carpetas de nivel superior dentro de esas tiendas.

Confesión: No recuerdo ninguno de los "Hows". Tengo subrutinas y funciones que recuerdo para mi.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow