outlook-vba
Introductie Deel 2: Winkels en mappen op het hoogste niveau
Zoeken…
Invoering
Eerste deel van een inleiding tot winkels en de mappen die ze bevatten. Bevat macro's om (1) de namen van toegankelijke winkels en (2) de namen van toegankelijke winkels en de mappen op het hoogste niveau weer te geven.
2.1 Verwachte voorkennis
- U bent een Outlook-gebruiker en begrijpt termen zoals "e-mail", "ontvangen tijd", "onderwerp" en "Mapvenster".
- U weet hoe u de Visual Basic Editor van Outlook kunt openen en een module kunt maken. Zie indien nodig deel 1 van de inleiding.
- Je hebt minimaal een basiskennis van VBA. Ik verklaar subroutines en variabelen zonder uitleg. Ik gebruik Withs, Ifs en Loops zonder uitleg. Ik zeg je dat iets een verzameling is. Ik zeg u om code naar een module te kopiëren en uit te voeren. Er zijn veel online tutorials, hoewel de meeste voor Excel VBA zijn en zich meer concentreren op het gebruik van de taal met Excel dan op de taal. Zoeken naar "VBA-tutorial" brengt sommigen die zich meer op de taal concentreren dan de toepassing die er bevredigend uitziet.
- U hoeft het Outlook Object Model niet te kennen; deze tutorial laat je kennismaken met een klein deel ervan.
2.2 Winkels
Outlook slaat e-mails, agenda-items, notities, taken en dergelijke op in bestanden die bekend staan als Stores . Als u naar uw mappenvenster kijkt, ziet u iets als:
Aaaaaaaaaa
Inbox
Drafts
Deleted Items
: :
Bbbbbbbbbb
Inbox
Drafts
Deleted Items
: :
Cccccccccc
: :
"Aaaaaaaaaa", "Bbbbbbbbbb" en "Cccccccccc" zijn de gebruikers- of weergavenamen van Stores. Ik heb altijd Outlook-standaardinstellingen geaccepteerd voor deze namen die in de loop der jaren zijn veranderd. Ooit was mijn standaardnaam nu mijn e-mailadres. De bestandsnaam voor deze winkels kan hetzelfde zijn, maar met een extensie zoals PST of OST of kan iets heel anders zijn. Een VBA-macro heeft de gebruikersnaam nodig om toegang te krijgen tot een winkel en houdt zich niet bezig met de bestandsnamen of de extensie.
U kunt zoveel winkels hebben als u wilt. Ik heb een "Outlook-gegevensbestand" dat voor mij is gemaakt toen ik Outlook installeerde. Toen ik accounts voor mijn e-mailadressen toevoegde, creëerde Outlook nieuwe winkels met de naam van het e-mailadres, zoals "[email protected]" en "[email protected]". Om de grootte van mijn hoofdwinkel te verkleinen, bewaar ik oude e-mails in winkels met namen zoals "Archief 2015".
Als u een zakelijke gebruiker bent, heeft u mogelijk toegang tot gedeelde winkels of de winkels van collega's.
De onderstaande macro's tonen drie verschillende manieren om de winkels weer te geven waartoe u toegang hebt. Ik stel voor dat u een nieuwe module maakt om de onderstaande code te behouden en F4 te gebruiken om toegang te krijgen tot de eigenschappen van de module, zodat u deze kunt noemen als "ModIntro" of een andere naam naar keuze. Als u deel 1 van deze serie hebt voltooid, beschikt u al over een dergelijke module.
Kopieer deze macro's naar een module en test die elk dezelfde uitvoer geven.
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
Bij VBA zult u merken dat er vaak verschillende methoden zijn om hetzelfde effect te bereiken. Hierboven heb ik drie manieren getoond om toegang te krijgen tot de winkels. Je hoeft ze niet allemaal te onthouden - kies je eigen favoriet - maar je moet wel weten dat er verschillende methoden zijn omdat andere mensen, van wie je de code misschien moet bestuderen, verschillende favorieten hebben.
De variabelen StoresColl
in macro's ListStores1()
en ListStores2()
zijn beide collecties maar bevatten verschillende soorten objecten: Store
en Folder
. Een Store
object kan alleen verwijzen naar een bestand op uw schijf. Een Folder
kan verwijzen naar een bestand op schijf, maar kan ook verwijzen naar mappen in een winkel zoals "Inbox" en "Sent Items". Stores
, Folders
, Store
en Folder
maken allemaal deel uit van het Outlook-objectmodel. In deze zelfstudieserie maakt u kennis met het model, maar het is geen formele definitie. Als u een formele definitie wilt, typt u "outlook vba-objectmodel" in uw favoriete zoekmachine. Zorg ervoor dat u naar de VBA-versie van het model kijkt.
2.3 Mappen op het hoogste niveau
In het bovenstaande voorbeeld van mijn mappenvenster vermeld ik slechts drie standaardmappen: "Inbox", "Drafts" en "Deleted Items". Er zijn andere standaardmappen en u kunt zoveel mappen maken als u wilt. Sommige mensen maken mappen onder Inbox, maar ik maak liever nieuwe mappen op hetzelfde niveau als Inbox. Uw mappen kunnen submappen bevatten die hun eigen submappen tot elke diepte kunnen hebben.
De volgende macro zal een lijst van het formulier produceren:
A
A1
A2
A3
B
B1
B2
C
C1
C2
C3
C4
waar A, B en C winkels zijn en A1, B1, C1 enzovoort mappen binnen A, B en C zijn. Als A1, B1, C1 enzovoort submappen hebben, worden deze niet in deze macro vermeld. Toegang tot dieper geneste mappen zal worden behandeld in het volgende deel van deze 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 Wat u moet onthouden uit deze tutorial
- Een winkel is een bestand waarin Outlook e-mails, agenda-items, notities, taken enzovoort opslaat.
- Een winkel kan standaardmappen van Outlook bevatten, zoals 'Postvak IN' en 'Verzonden items'.
- Een winkel kan ook door gebruikers gemaakte mappen bevatten.
- Zowel de standaardmappen van Outlook als de door de gebruiker gemaakte mappen kunnen door de gebruiker gemaakte submappen, submappen, enzovoort tot elke diepte bevatten.
- Lijst met winkels.
- Hoe winkels en de mappen op het hoogste niveau in die winkels te vermelden.
Biecht: ik herinner me geen van beide "Hows". Ik heb subroutines en functies die voor mij onthouden zijn.