Beitrag aus SmartTools Access Weekly
Auslesen eines bestimmten Outlook-Ordners per VBA
Access 365 2024 2021 2019 2016 2013 2010
FRAGE Ich habe eine Access-Lösung erstellt, mit der ich Nachrichten aus dem Posteingang von Outlook auslesen kann. Das funktioniert auch einwandfrei. Ich möchte nun aber Nachrichten aus einem anderen Nachrichtenordner auslesen, in den bestimmte Nachrichten per Regel verschoben worden sind. Wie sehen die VBA-Anweisungen aus, um zum Beispiel einen Unterordner "Bestellungen" im Posteingang zu adressieren?
Für den Posteingang verwende ich den folgenden Code:
Dim objOutlook As Outlook.Application
Dim objNS As Outlook.NameSpace
Dim objFolder As Outlook.MAPIFolder
Set objOutlook = GetObject(, "Outlook.Application")
Set objNS = objOutlook.GetNamespace("MAPI")
Set objFolder = objNS.GetDefaultFolder(olFolderInbox)
Diverse Anfragen
ANTWORT Fügen Sie dazu nach der Zeile mit "GetDefaultFolder" folgende Anweisung ein:
Set objFolder = objFolder.Folders.Item("Bestellungen")
In der Auflistung "Folders" werden die Unterordner des betreffenden Ordners verwaltet, die Sie dann per ".Item(<Name>)" adressieren können. Wenn sich der Unterordner an einer anderen, nicht so einfach zu adressierenden Stelle befindet, verwenden Sie für den Zugriff "GetFolderFromID()" und die ID des gewünschten Unterordners wie folgt:
- Öffnen Sie den betreffenden Ordner in Outlook.
- Wechseln Sie mit Alt + F11 in die VBA-Entwicklungsumgebung.
- Öffnen Sie das Direktfenster mit Strg + G und geben Sie folgende Anweisung ein:
? ActiveExplorer.CurrentFolder.EntryID
- Es wird nun eine alphanumerische Zeichenkette wie beispielsweise "3E5D70E818A2454B989B80585AC3B94DC28" angezeigt. Das ist die eindeutige ID des Ordners.
- Ändern Sie Ihre Routine wie folgt:
Set objOutlook = GetObject(, "Outlook.Application")
Set objNS = objOutlook.GetNamespace("MAPI")
Set objFolder = _
objNS.GetFolderFromID( _
"3E5D70E818A2454B989B80585AC3B94DC28")
Damit ist ein Zugriff auf Ordner an beliebiger Position in der Ordnerstruktur möglich.