outlook-vba
Einführung Teil 2: Speicher und Ordner auf oberster Ebene
Suche…
Einführung
Erster Teil einer Einführung zu den Filialen und den darin enthaltenen Ordnern. Enthält Makros zur Anzeige (1) der Namen der zugänglichen Geschäfte und (2) der Namen der zugänglichen Geschäfte und der Ordner der obersten Ebene.
2.1 Erwartete Vorkenntnisse
- Sie sind ein Outlook-Benutzer und verstehen Begriffe wie "E-Mail", "Empfangszeit", "Betreff" und "Ordnerbereich".
- Sie wissen, wie Sie auf den Visual Basic-Editor von Outlook zugreifen und ein Modul erstellen. Siehe bei Bedarf Teil 1.
- Sie verfügen mindestens über Grundkenntnisse in VBA. Ich erkläre Unterprogramme und Variablen ohne Erklärung. Ich benutze Withs, Ifs und Loops ohne Erklärung. Ich sage dir etwas ist eine Sammlung. Ich sage Ihnen, Code in ein Modul zu kopieren und auszuführen. Es gibt viele Online-Lernprogramme, obwohl die meisten für Excel VBA sind und sich mehr auf die Verwendung der Sprache mit Excel als auf die Sprache konzentrieren. Wenn Sie nach „VBA-Tutorial“ suchen, werden einige angezeigt, die sich mehr auf die Sprache konzentrieren als auf die Anwendung, die zufriedenstellend aussieht.
- Sie müssen das Outlook-Objektmodell nicht kennen. Dieses Tutorial führt Sie in einen kleinen Teil davon ein.
2.2 Geschäfte
Outlook speichert E-Mails, Kalenderelemente, Notizen, Aufgaben usw. in Dateien, die als Stores bezeichnet werden . Wenn Sie Ihr Ordnerfenster betrachten, sehen Sie Folgendes:
Aaaaaaaaaa
Inbox
Drafts
Deleted Items
: :
Bbbbbbbbbb
Inbox
Drafts
Deleted Items
: :
Cccccccccc
: :
"Aaaaaaaaaaa", "Bbbbbbbbbb" und "Cccccccccc" sind die Benutzer- oder Anzeigenamen von Stores. Ich habe immer Outlook-Standardeinstellungen für diese Namen akzeptiert, die sich im Laufe der Jahre geändert haben. Sobald der Standardwert nun mein Name war, ist es meine E-Mail-Adresse. Der Dateiname für diese Speicher kann derselbe sein, jedoch mit einer Erweiterung wie PST oder OST oder möglicherweise etwas völlig anderes. Ein VBA-Makro benötigt den Benutzernamen für den Zugriff auf ein Geschäft und ist nicht mit den Dateinamen oder der Erweiterung befasst.
Sie können so viele Geschäfte haben, wie Sie möchten. Ich habe eine "Outlook-Datendatei", die bei der Installation von Outlook für mich erstellt wurde. Wenn ich Konten für meine E-Mail-Adressen hinzufügte, erstellte Outlook neue Speicher, die nach der E-Mail-Adresse benannt wurden, z. B. „[email protected]“ und „[email protected]“. Um die Größe meines Hauptspeichers zu reduzieren, speichere ich alte E-Mails mit Namen wie "Archiv 2015" in Geschäften.
Wenn Sie ein Geschäftsbenutzer sind, haben Sie möglicherweise Zugriff auf gemeinsam genutzte Geschäfte oder auf Geschäfte von Kollegen.
Die folgenden Makros zeigen drei verschiedene Arten der Auflistung der Geschäfte, auf die Sie zugreifen können. Ich empfehle Ihnen, ein neues Modul zu erstellen, das den untenstehenden Code enthält und F4 verwendet, um auf die Eigenschaften des Moduls zuzugreifen, sodass Sie es als "ModIntro" oder einen anderen Namen Ihrer Wahl bezeichnen können. Wenn Sie Teil 1 dieser Serie abgeschlossen haben, verfügen Sie bereits über ein solches Modul.
Kopieren Sie diese Makros in ein Modul und testen Sie, ob jedes die gleiche Ausgabe ergibt.
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
Bei VBA werden Sie feststellen, dass es oft mehrere Methoden gibt, um denselben Effekt zu erzielen. Oben habe ich drei Methoden gezeigt, um auf die Geschäfte zuzugreifen. Sie müssen sich nicht alle merken - wählen Sie Ihren eigenen Favoriten -, aber Sie müssen sich dessen bewusst sein, dass es verschiedene Methoden gibt, da andere Personen, deren Code Sie möglicherweise lernen müssen, unterschiedliche Favoriten haben.
Die Variablen StoresColl
in den Makros ListStores1()
und ListStores2()
sind beide Sammlungen, enthalten jedoch unterschiedliche Objekttypen: Store
und Folder
. Ein Store
Objekt kann nur auf eine Datei auf Ihrer Disc verweisen. Ein Folder
kann auf eine Datei auf einer Disc verweisen, kann aber auch auf Ordner in einem Geschäft wie „Posteingang“ und „Gesendete Objekte“ verweisen. Stores
, Folders
, Store
und Folder
sind alle Teil des Outlook-Objektmodells. Diese Tutorialserie führt Sie in das Modell ein, ist aber keine formale Definition. Wenn Sie eine formale Definition wünschen, geben Sie "outlook vba object model" in Ihre bevorzugte Suchmaschine ein. Stellen Sie sicher, dass Sie sich die VBA-Version des Modells ansehen.
2.3 Ordner der obersten Ebene
In meinem Beispiel im Ordnerbereich liste ich nur drei Standardordner auf: "Posteingang", "Entwürfe" und "Gelöschte Objekte". Es gibt andere Standardordner, und Sie können beliebig viele Ordner erstellen. Einige Leute erstellen Ordner unter Posteingang, aber ich ziehe es vor, neue Ordner auf derselben Ebene wie Posteingang zu erstellen. Ihre Ordner können Unterordner haben, die ihre eigenen Unterordner in beliebiger Tiefe haben können.
Das folgende Makro erzeugt eine Auflistung des Formulars:
A
A1
A2
A3
B
B1
B2
C
C1
C2
C3
C4
Wenn A, B und C Speicher sind und A1, B1, C1 usw. Ordner innerhalb von A, B und C sind. Wenn A1, B1, C1 usw. Unterordner haben, werden sie von diesem Makro nicht aufgelistet. Der Zugriff auf tiefer verschachtelte Ordner wird im nächsten Teil dieses Tutorials behandelt.
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 Was Sie in diesem Tutorial beachten sollten
- Ein Geschäft ist eine Datei, in der Outlook E-Mails, Kalenderelemente, Notizen, Aufgaben usw. speichert.
- Ein Geschäft kann Outlook-Standardordner wie "Posteingang" und "Gesendete Objekte" enthalten.
- Ein Geschäft kann auch vom Benutzer erstellte Ordner enthalten.
- Sowohl Outlook-Standardordner als auch von Benutzern erstellte Ordner können vom Benutzer erstellte Unterordner, Unterunterordner usw. in beliebiger Tiefe enthalten.
- Wie kann ich Geschäfte auflisten?
- Auflisten der Geschäfte und der Ordner der obersten Ebene innerhalb dieser Geschäfte.
Geständnis: Ich erinnere mich an keines der „Hows“. Ich habe Unterprogramme und Funktionen, die für mich in Erinnerung bleiben.