outlook-vba
Inledning Del 2: Butiker och toppmappar
Sök…
Introduktion
Första delen av en introduktion till butiker och de mappar de innehåller. Innehåller makron för att visa (1) namnen på tillgängliga butiker och (2) namnen på tillgängliga butiker och toppnivåmapparna inom dem.
2.1 Förväntad förkunskap
- Du är Outlook-användare och förstår termer som "e-post", "mottagen tid", "ämne" och "Mappruta".
- Du vet hur du får åtkomst till Outlook Visual Basic Editor och skapa en modul. Se introduktion del 1 vid behov.
- Du har åtminstone en grundläggande kunskap om VBA. Jag förklarar subroutiner och variabler utan förklaring. Jag använder Withs, Ifs och Loops utan förklaring. Jag säger att något är en samling. Jag ber dig kopiera kod till en modul och köra den. Det finns många onlinestudier även om de flesta är för Excel VBA och koncentrerar sig mer på att använda språket med Excel än på språket. Sökning efter “VBA-tutorial” ger upp några som koncentrerar sig på språket mer än applikationen som ser tillfredsställande ut.
- Du behöver inte känna till Outlook Object Model; denna handledning introducerar dig för en liten del av den.
2.2 Butiker
Outlook lagrar e-postmeddelanden, kalenderobjekt, anteckningar, uppgifter och så vidare i filer som kallas butiker . Om du tittar på mappfönstret ser du något som:
Aaaaaaaaaa
Inbox
Drafts
Deleted Items
: :
Bbbbbbbbbb
Inbox
Drafts
Deleted Items
: :
Cccccccccc
: :
"Aaaaaaaaaa", "Bbbbbbbbbb" och "Cccccccccc" är användar- eller visningsnamn för butiker. Jag har alltid accepterat standardvärden för Outlook för dessa namn som har ändrats under åren. När standardvärdet var mitt namn nu är det min e-postadress. Filnamnet för dessa butiker kan vara detsamma men med en tillägg som PST eller OST eller kan vara något helt annat. Ett VBA-makro behöver användarnamnet för att komma åt en butik och handlar inte om filnamn eller tillägg.
Du kan ha så många butiker som du vill. Jag har "Outlook-datafil" som skapades för mig när jag installerade Outlook. När jag lagt till konton för mina e-postadresser skapade Outlook nya butiker med namnet på e-postadressen som "[email protected]" och "[email protected]". För att minska storleken på min huvudbutik sparar jag gamla e-postmeddelanden i butiker med namn som "Archive 2015".
Om du är en affärsanvändare kan du ha tillgång till delade butiker eller till kollegor.
Makronna nedan visar tre olika sätt att lista de butiker du har åtkomst till. Jag föreslår att du skapar en ny modul för att hålla koden nedan och använda F4 för att komma åt modulens egenskaper så att du kan namnge den som "ModIntro" eller något annat namn du väljer. Om du har slutfört del 1 av denna serie, har du redan en sådan modul.
Kopiera dessa makron till en modul och testa att var och en ger samma utgång.
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
Du kommer att upptäcka med VBA att det ofta finns flera metoder för att uppnå samma effekt. Ovan har jag visat tre metoder för att komma åt butikerna. Du behöver inte komma ihåg dem alla - välj din egen favorit - men du behöver vara medveten om att det finns flera metoder eftersom andra människor, vars kod du kan behöva studera, har olika favoriter.
Variablerna StoresColl
i makron ListStores1()
och ListStores2()
är båda samlingar men har olika typer av objekt: Store
och Folder
. Ett Store
objekt kan bara referera till en fil på din skiva. En Folder
kan referera till en fil på skivan men kan också referera till mappar i en butik som "Inbox" och "Sent Items". Stores
, Folders
, Store
och Folder
är alla en del av Outlook-objektmodellen. Denna tutorial-serie introducerar dig till modellen, men det är inte en formell definition. Om du vill ha en formell definition skriver du "outlook vba object model" i din favorit sökmotor. Se till att du tittar på VBA-versionen av modellen.
2.3 Mappar på toppnivå
I mitt mappfönsterexempel ovan listar jag bara tre standardmappar: "Inbox", "Utkast" och "Raderade objekt". Det finns andra standardmappar och du kan skapa så många egna mappar som du vill. Vissa människor skapar mappar under Inkorgen men jag föredrar att skapa nya mappar på samma nivå som Inkorgen. Dina mappar kan ha undermappar som kan ha sina egna undermappar till vilket djup som helst.
Följande makro ger en lista över formuläret:
A
A1
A2
A3
B
B1
B2
C
C1
C2
C3
C4
där A, B och C är butiker och A1, B1, C1 och så vidare är mappar inom A, B och C. Om A1, B1, C1 och så vidare har undermappar kommer de inte att listas av detta makro. Åtkomst till djupare kapslade mappar kommer att behandlas i nästa del av denna handledning.
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 Vad du bör komma ihåg från denna självstudie
- En butik är en fil där Outlook lagrar e-post, kalenderobjekt, anteckningar, uppgifter och så vidare.
- En butik kan innehålla Outlook-standardmappar som "Inkorgen" och "Skickade objekt".
- En butik kan också innehålla mappar som skapats av användare.
- Både Outlook-standardmappar och användarskapade mappar kan innehålla användarskapade undermappar, undermundmappar och så vidare till vilket djup som helst.
- Hur man listar butiker.
- Så här listar du butiker och toppmapparna i dessa butiker.
Bekännelse: Jag kommer inte ihåg någon av "Hows". Jag har subroutiner och funktioner som kommer ihåg för mig.