outlook-vba
Introducción Parte 2: Tiendas y carpetas de nivel superior.
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.