outlook-vba
Introduction Partie 2: Stockages et dossiers de niveau supérieur
Recherche…
Introduction
Première partie d'une introduction aux magasins et aux dossiers qu'ils contiennent. Contient des macros pour afficher (1) les noms des magasins accessibles et (2) les noms des magasins accessibles et les dossiers de premier niveau qu'ils contiennent.
2.1 Connaissances préalables attendues
- Vous êtes un utilisateur Outlook et comprenez des termes tels que «courrier électronique», «heure de réception», «sujet» et «volet de dossiers».
- Vous savez comment accéder à Visual Basic Editor d'Outlook et créer un module. Voir Introduction Partie 1 si nécessaire.
- Vous avez au moins une connaissance de base de VBA. Je déclare les sous-programmes et les variables sans explication. J'utilise Withs, Ifs et Loops sans explication. Je vous dis que quelque chose est une collection. Je vous dis de copier du code sur un module et de l'exécuter. Il existe de nombreux didacticiels en ligne, mais la plupart sont destinés à Excel VBA et se concentrent davantage sur l'utilisation du langage avec Excel que sur le langage. La recherche de “tutoriel VBA” en amène certains qui se concentrent sur la langue plus que l'application qui semble satisfaisante.
- Vous n'êtes pas obligé de connaître le modèle d'objet Outlook; Ce tutoriel vous en présente une petite partie.
2,2 magasins
Outlook stocke les e-mails, les éléments de calendrier, les notes, les tâches, etc. dans les fichiers appelés magasins . Si vous regardez votre fenêtre de dossiers, vous verrez quelque chose comme:
Aaaaaaaaaa
Inbox
Drafts
Deleted Items
: :
Bbbbbbbbbb
Inbox
Drafts
Deleted Items
: :
Cccccccccc
: :
"Aaaaaaaaaa", "Bbbbbbbbbb" et "Cccccccccc" sont les noms d'utilisateur ou d'affichage des magasins. J'ai toujours accepté les valeurs par défaut d'Outlook pour ces noms qui ont changé au fil des ans. Une fois le nom par défaut, mon nom est maintenant mon adresse e-mail. Le nom de fichier pour ces magasins peut être le même mais avec une extension telle que PST ou OST ou peut être quelque chose de complètement différent. Une macro VBA a besoin du nom d'utilisateur pour accéder à un magasin et ne concerne pas les noms de fichiers ou l'extension.
Vous pouvez avoir autant de magasins que vous le souhaitez. J'ai «fichier de données Outlook» qui a été créé pour moi lorsque j'ai installé Outlook. Lorsque j'ai ajouté des comptes pour mes adresses e-mail, Outlook a créé de nouveaux magasins nommés pour l'adresse e-mail, tels que «[email protected]» et «[email protected]». Pour réduire la taille de mon magasin principal, je sauvegarde les anciens emails dans les magasins avec des noms tels que «Archive 2015».
Si vous êtes un utilisateur professionnel, vous pouvez avoir accès à des magasins partagés ou à des magasins de collègues.
Les macros ci-dessous montrent trois manières différentes de répertorier les magasins auxquels vous pouvez accéder. Je vous suggère de créer un nouveau module pour contenir le code ci-dessous et d'utiliser F4 pour accéder aux propriétés du module afin que vous puissiez le nommer «ModIntro» ou un autre nom de votre choix. Si vous avez terminé la première partie de cette série, vous aurez déjà un tel module.
Copiez ces macros dans un module et testez que chacune donne la même sortie.
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
Vous constaterez avec VBA qu'il existe souvent plusieurs méthodes pour obtenir le même effet. J'ai montré ci-dessus trois méthodes pour accéder aux magasins. Vous n'avez pas besoin de vous souvenir de tous - choisissez votre propre favori - mais vous devez savoir qu'il existe plusieurs méthodes car d'autres personnes, dont vous pourriez avoir besoin d'étudier le code, auront des favoris différents.
Les variables StoresColl
dans les macros ListStores1()
et ListStores2()
sont toutes deux des collections mais contiennent différents types d'objet: Store
et Folder
. Un objet Store
ne peut référencer qu'un fichier sur votre disque. Un Folder
peut référencer un fichier sur le disque, mais peut également référencer des dossiers dans un magasin, tels que «Boîte de réception» et «Éléments envoyés». Stores
, les Folders
, le Store
et le Folder
font tous partie du modèle d'objet Outlook. Cette série de didacticiels vous présente le modèle mais il ne s'agit pas d'une définition formelle. Si vous voulez une définition formelle, tapez «Outlook VBA Object Model» dans votre moteur de recherche préféré. Assurez-vous de regarder la version VBA du modèle.
2.3 Dossiers de haut niveau
Dans mon exemple de volet de dossiers ci-dessus, je ne répertorie que trois dossiers standard: «Boîte de réception», «Brouillons» et «Éléments supprimés». Il existe d'autres dossiers standard et vous pouvez créer autant de dossiers que vous le souhaitez. Certaines personnes créent des dossiers sous Boîte de réception, mais je préfère créer de nouveaux dossiers au même niveau que la boîte de réception. Vos dossiers peuvent avoir des sous-dossiers qui peuvent avoir leurs propres sous-dossiers à n'importe quelle profondeur.
La macro suivante produira une liste du formulaire:
A
A1
A2
A3
B
B1
B2
C
C1
C2
C3
C4
où A, B et C sont des magasins et A1, B1, C1 et ainsi de suite sont des dossiers dans A, B et C. Si A1, B1, C1 et ainsi de suite ont des sous-dossiers, ils ne seront pas répertoriés par cette macro. L'accès aux dossiers les plus imbriqués sera abordé dans la prochaine partie de ce tutoriel.
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 Ce que vous devez retenir de ce tutoriel
- Un magasin est un fichier dans lequel Outlook stocke des e-mails, des éléments de calendrier, des notes, des tâches, etc.
- Un magasin peut contenir des dossiers standard Outlook tels que «Boîte de réception» et «Éléments envoyés».
- Un magasin peut également contenir des dossiers créés par l'utilisateur.
- Les dossiers standard Outlook et les dossiers créés par l'utilisateur peuvent contenir des sous-dossiers, des sous-sous-dossiers, etc. créés par l'utilisateur.
- Comment lister les magasins
- Comment lister les magasins et les dossiers de premier niveau dans ces magasins.
Confession: je ne me souviens d'aucun des «Hows». J'ai des sous-programmes et des fonctions qui me rappellent.