IMAP - Ordner automatisch aufklappen
IMAP-Ordner werden beim Öffnen von Outlook® immer geschlossen dargestellt. Mit dem folgenden Skript werden alle Ordner mit Namen Posteingang automatisch geöffnet und zuletzt ein zuvor definierter Startordner ausgewählt.
Hinweis: Outlook® klappt den Standardordner immer auf, was sich auch durch Programmcode nicht so ohne weiteres verhindern lässt.
Zur Verwendung dieses Beispiels beachten Sie bitte die wichtigen Hinweise, sowie den Workshop VBA in Outlook® verwenden.
Für Outlook® 2003
Diesen Codeteil bitte in das Modul DieseOutlookSitzung kopieren:
Option Explicit Private Declare Function SetTimer Lib "user32.dll" ( _ ByVal hwnd As Long, _ ByVal nIDEvent As Long, _ ByVal uElapse As Long, _ ByVal lpTimerFunc As Long) As Long Private Sub Application_Startup() '--------------------------------------------------------------------- ' In manchen Fällen funktioniert der Programmcode nicht, wenn er sofort ' beim Start von Outlook ausgeführt wird. Daher wird der Code über einen ' Windows-Timer aufgerufen. Legen Sie in der Variablen "lngWait" die ' Anzahl Sekunden fest, nach der die Funktion zum Öffnen der Ordner ' aufgerufen werden soll. '--------------------------------------------------------------------- Dim lngWait As Long On Error Resume Next lngWait = 5 ' 5 Sekunden nach Outlook-Start noch warten Call StartTimer(lngWait) End Sub Private Sub StartTimer(ByVal lngIntervall As Long) g_lngTimer = SetTimer(0&, 0&, lngIntervall * 1000, AddressOf OpenFolders) End Sub
Den folgenden Codeteil bitte in ein neues Modul kopieren (Einfügen -> Modul im VBA-Editor):
Option Explicit Public g_lngTimer As Long Private Declare Function KillTimer Lib "user32.dll" ( _ ByVal hwnd As Long, _ ByVal nIDEvent As Long) As Long Public Sub OpenFolders() '===================================================================== ' Öffnet nach einer eingestellten Zeit ab Programmstart alle Postein- ' gangsordner und wählt dann einen festgelegten Startordner aus. ' (c) Peter Marchert - http://www.outlook-stuff.com ' 2008-11-21 Version 1.0.0 ' 2010-07-11 Version 1.1.0 '===================================================================== Dim objFolder As Outlook.MAPIFolder ' Outlook-Ordner Dim strStartFolder As String ' Ordner bei Programmstart Dim lngFolder As Long ' Schleifenzähler On Error Resume Next '--------------------------------------------------------------------- ' Timer wieder löschen, damit die Prozedur nicht ständig aufgerufen wird '--------------------------------------------------------------------- Call KillTimer(0&, g_lngTimer) '--------------------------------------------------------------------- ' Startordner festlegen (z. B. "Kontakte", "Posteingang", "Aufgaben" etc.) ' (Darf kein Unterordner sein) '--------------------------------------------------------------------- strStartFolder = "Outlook-Heute" '--------------------------------------------------------------------- ' Alle Posteingangs-Ordner aufklappen '--------------------------------------------------------------------- For lngFolder = 1 To Outlook.Session.Folders.Count Set objFolder = Outlook.Session.Folders(lngFolder).Folders("Posteingang") Call Outlook.ActiveExplorer.SelectFolder(objFolder) DoEvents Next '--------------------------------------------------------------------- ' Ordner für Programmstart festlegen '--------------------------------------------------------------------- If strStartFolder = "Outlook-Heute" Then Set objFolder = Outlook.Session.GetDefaultFolder(olFolderInbox).Parent Else Set objFolder = Outlook.Session.GetDefaultFolder(olFolderInbox) Set objFolder = objFolder.Parent.Folders(strStartFolder) '----------------------------------------------------------------- ' Wenn Sie einen anderen, als den Standardposteingang öffnen möchten, ' kommentieren Sie die nachfolgende Zeile aus. Die Zahl 1 müssen ' Sie gegebenenfalls noch anpassen (2, 3, 4 etc). '----------------------------------------------------------------- 'Set objFolder = Outlook.Session.Folders(1).Folders("Posteingang") '----------------------------------------------------------------- ' Wenn Sie einen Unterordner aufklappen möchten, kommentieren Sie ' die nachfolgende Zeile aus und passen gegebenenfalls die Zahl 1 ' und den Ordnernamen an. '----------------------------------------------------------------- 'Set objFolder = Outlook.Session.Folders(1).Folders("Posteingang").Folders("Privat") End If '--------------------------------------------------------------------- ' Ordner bei Programmstart anwählen '--------------------------------------------------------------------- Call Outlook.ActiveExplorer.SelectFolder(objFolder) '--------------------------------------------------------------------- ' Referenz auf Ordner löschen '--------------------------------------------------------------------- Set objFolder = Nothing End Sub