IMAP - Ordner automatisch aufklappen

Zuletzt geändert am 03. April 2013

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