outlook-vba
Wprowadzenie Część 2: Sklepy i foldery najwyższego poziomu
Szukaj…
Wprowadzenie
Pierwsza część wprowadzenia do sklepów i zawartych w nich folderów. Zawiera makra do wyświetlania (1) nazw dostępnych sklepów oraz (2) nazw dostępnych sklepów i znajdujących się w nich folderów najwyższego poziomu.
2.1 Oczekiwana wcześniejsza wiedza
- Jesteś użytkownikiem programu Outlook i rozumiesz pojęcia, takie jak „e-mail”, „otrzymany czas”, „temat” i „okienko folderów”.
- Wiesz, jak uzyskać dostęp do Edytora Visual Basic programu Outlook i utworzyć moduł. W razie potrzeby patrz część wstępna 1.
- Masz przynajmniej podstawową wiedzę na temat VBA. Deklaruję podprogramy i zmienne bez wyjaśnienia. Używam Withs, Ifs i Loops bez wyjaśnienia. Mówię ci, że coś jest kolekcją. Mówię ci, aby skopiować kod do modułu i uruchomić go. Istnieje wiele samouczków online, chociaż większość dotyczy Excel VBA i koncentrują się bardziej na używaniu języka z Excelem niż na języku. Wyszukiwanie „samouczka języka VBA” powoduje, że niektóre koncentrują się bardziej na języku niż na aplikacji, która wygląda zadowalająco.
- Nie musisz znać modelu obiektowego programu Outlook; w tym samouczku zapoznasz się z jego niewielką częścią.
2.2 Sklepy
Program Outlook przechowuje wiadomości e-mail, elementy kalendarza, notatki, zadania i tak dalej w plikach znanych jako Sklepy . Jeśli spojrzysz na okienko folderów, zobaczysz coś takiego:
Aaaaaaaaaa
Inbox
Drafts
Deleted Items
: :
Bbbbbbbbbb
Inbox
Drafts
Deleted Items
: :
Cccccccccc
: :
„Aaaaaaaaaa”, „Bbbbbbbbbb” i „Cccccccccc” to nazwy użytkowników lub wyświetlanych Sklepów. Zawsze akceptowałem domyślne ustawienia Outlooka dla tych nazw, które zmieniały się przez lata. Kiedyś domyślnym było moje imię, teraz jest to mój adres e-mail. Nazwa pliku dla tych sklepów może być taka sama, ale z rozszerzeniem, takim jak PST lub OST, lub może być czymś zupełnie innym. Makro VBA potrzebuje nazwy użytkownika, aby uzyskać dostęp do sklepu i nie dotyczy nazw plików ani rozszerzenia.
Możesz mieć tyle sklepów, ile chcesz. Mam „plik danych programu Outlook”, który został stworzony dla mnie podczas instalacji programu Outlook. Po dodaniu kont dla moich adresów e-mail program Outlook utworzył nowe sklepy o nazwach takich jak „[email protected]” i „[email protected]”. Aby zmniejszyć rozmiar mojego głównego sklepu, zapisuję stare e-maile w sklepach o nazwach takich jak „Archiwum 2015”.
Jeśli jesteś użytkownikiem biznesowym, możesz mieć dostęp do wspólnych sklepów lub sklepów współpracowników.
Poniższe makra pokazują trzy różne sposoby wyświetlania sklepów, do których można uzyskać dostęp. Sugeruję utworzenie nowego modułu do przechowywania poniższego kodu i użycia F4 w celu uzyskania dostępu do właściwości modułu, aby można było go nazwać „ModIntro” lub inną wybraną przez siebie nazwą. Jeśli ukończyłeś część 1 tej serii, będziesz już mieć taki moduł.
Skopiuj te makra do modułu i sprawdź, czy każdy daje takie same dane wyjściowe.
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
Przekonasz się z VBA, że często istnieje kilka metod osiągnięcia tego samego efektu. Powyżej pokazałem trzy metody dostępu do sklepów. Nie musisz pamiętać ich wszystkich - wybierz swojego ulubionego - ale musisz pamiętać, że istnieje kilka metod, ponieważ inne osoby, których kod może być potrzebny do nauki, będą miały różne ulubione.
Zmienne StoresColl w makrach ListStores1() i ListStores2() są kolekcjami, ale zawierają różne typy obiektów: Store i Folder . Obiekt Store może odwoływać się tylko do pliku na dysku. Folder może odwoływać się do pliku na dysku, ale może także odwoływać się do folderów w sklepie, takich jak „Skrzynka odbiorcza” i „Elementy wysłane”. Stores , Folders , Store i Folder są częścią programu Outlook Object Model. Ta seria samouczków przedstawia model, ale nie jest to formalna definicja. Jeśli chcesz formalną definicję, wpisz „outlook vba object model” w swojej ulubionej wyszukiwarce. Pamiętaj, aby spojrzeć na wersję modelu VBA.
2.3 Foldery najwyższego poziomu
W powyższym przykładzie okienka folderów wymieniłem tylko trzy standardowe foldery: „Skrzynka odbiorcza”, „Szkice” i „Usunięte elementy”. Istnieją inne standardowe foldery i możesz utworzyć dowolną liczbę własnych folderów. Niektóre osoby tworzą foldery w Inbox, ale wolę tworzyć nowe foldery na tym samym poziomie co Inbox. Twoje foldery mogą mieć podfoldery, które mogą mieć własne podfoldery do dowolnej głębokości.
Poniższe makro utworzy listę formularza:
A
A1
A2
A3
B
B1
B2
C
C1
C2
C3
C4
gdzie A, B i C są sklepami, a A1, B1, C1 itd. są folderami w A, B i C. Jeśli A1, B1, C1 i tak dalej mają podfoldery, nie będą wyświetlane na liście przez to makro. Dostęp do głębiej zagnieżdżonych folderów zostanie omówiony w następnej części tego samouczka.
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 O czym powinieneś pamiętać z tego samouczka
- Sklep to plik, w którym program Outlook przechowuje wiadomości e-mail, elementy kalendarza, notatki, zadania itd.
- Sklep może zawierać standardowe foldery programu Outlook, takie jak „Skrzynka odbiorcza” i „Elementy wysłane”.
- Sklep może również zawierać foldery utworzone przez użytkownika.
- Zarówno standardowe foldery programu Outlook, jak i foldery utworzone przez użytkownika mogą zawierać podfoldery utworzone przez użytkownika, podfoldery itp. Na dowolną głębokość.
- Jak wyświetlić listę sklepów.
- Jak wyświetlić listę sklepów i folderów najwyższego poziomu w tych sklepach.
Spowiedź: Nie pamiętam żadnego z „Jak”. Mam podprogramy i funkcje, które pamiętają dla mnie.