Bei Outlook-Start nur bestimmte Konten abrufen

Zuletzt geändert am 03. April 2013

Wer nur bestimmte E-Mail-Konten beim Start von Outlook® abrufen und nicht auf die automatische Übermittlung verzichten möchte, kann dies mit Boardmitteln nur per Programmcode erreichen.

Zwar kann man festlegen, welche Übermittlungsgruppen beim Beenden ausgeführt werden sollen, jedoch nicht beim Starten. Um nur bestimmte Konten abzurufen, legen Sie dafür eine entsprechende Übermittlungsgruppe an (Extras -> Optionen -> E-Mail-Setup -> Senden/Empfangen). Die automatische Übermittlung in den Übermittlungsgruppen müssen Sie deaktivieren, da sonst beim Outlook®-Start alle Konten abgerufen werden.

In den Konstanten strGroup legen Sie jeweils fest, welche Gruppen beim Start von Outlook® bzw. regelmäßig alle X Minuten abgerufen werden sollen. Der Intervall wird in der Konstanten lngIntervall definiert (Standard: 5 = 5 Minuten).

Zur Verwendung dieses Beispiels beachten Sie bitte die wichtigen Hinweise, sowie den Workshop VBA in Outlook® verwenden.

Ab Outlook® 2000

Diesen Code-Teil 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 Declare Function KillTimer Lib "user32.dll" ( _
    ByVal hwnd As Long, _
    ByVal nIDEvent As Long) As Long
 
Private m_lngTimer As Long
 
Private Sub Application_Startup()
 
    '=====================================================================
    ' Übermittelt bei Outlook-Start nur vordefinierte Gruppen
    ' (c) Peter Marchert - http://www.outlook-stuff.com
    ' 2008-12-05 Version 1.0.0
    '=====================================================================
 
    '---------------------------------------------------------------------
    ' Hier bitte die Übermittlungsgruppen festlegen, die beim Start von
    ' Outlook abgerufen werden sollen (mehrere durch ; trennen). Mit dem
    ' Programmcode "ListSyncObjects" können Sie die Namen ermitteln.
    '---------------------------------------------------------------------
    Const strGroup As String = "Gmail;Arcor;Strato"
 
    '---------------------------------------------------------------------
    ' Hier in Minuten festlegen, wie oft die Übermittlung stattfinden soll
    '---------------------------------------------------------------------
    Const lngIntervall As Long = 5
 
    Dim objSync As Outlook.SyncObject
    Dim arySync() As String
    Dim lngSync As Long
 
    '---------------------------------------------------------------------
    ' Datenfeld mit den definierten Übermittlungsgruppen erstellen
    '---------------------------------------------------------------------
    arySync() = Split(strGroup, ";")
 
    '---------------------------------------------------------------------
    ' Alle definierten Übermittlungsgruppen abarbeiten
    '---------------------------------------------------------------------
    For lngSync = 0 To UBound(arySync)
 
        '-----------------------------------------------------------------
        ' Übermittlungsgruppe referenzieren
        '-----------------------------------------------------------------
        Set objSync = Outlook.Session.SyncObjects(arySync(lngSync))
 
        '-----------------------------------------------------------------
        ' Gibt es die Übermittlungsgruppe (noch), wird sie syncronisiert
        '-----------------------------------------------------------------
        If Not objSync Is Nothing Then objSync.Start
 
    Next
 
    '---------------------------------------------------------------------
    ' Ein Timer übernimmt die automatische Übermittlung alle X Minuten,
    ' die zuvor in den Übermittlungsgruppen deaktiviert wurde.
    '---------------------------------------------------------------------
    Call StartTimer(lngIntervall)
 
    '---------------------------------------------------------------------
    ' Clean Up
    '---------------------------------------------------------------------
    Erase arySync()
    Set objSync = Nothing
 
End Sub
 
Private Sub StartTimer(ByVal lngIntervall As Long)
 
    '=====================================================================
    ' Schaltet den Timer ein (lngIntervall = Minuten, wird in ms umgerechnet)
    ' (c) Peter Marchert - http://www.outlook-stuff.com
    ' 2008-12-05 Version 1.0.0
    '=====================================================================
    
    m_lngTimer = SetTimer(0&, 0&, lngIntervall * 1000 * 60, AddressOf AutoSyncAllGroups)
 
End Sub
 
Private Sub Application_Quit()
 
    Call KillTimer(0&, m_lngTimer)
 
End Sub

Den folgenden Code-Teil bitte in ein neues Modul kopieren (Einfügen -> Modul im VBA-Editor):

Option Explicit
 
Public Sub AutoSyncAllGroups()
 
    '=====================================================================
    ' Übermittelt alle vordefinierten Gruppen in einem festgelegten Intervall
    ' (c) Peter Marchert - http://www.outlook-stuff.com
    ' 2008-12-05 Version 1.0.0
    '=====================================================================
 
    '---------------------------------------------------------------------
    ' Hier bitte die Übermittlungsgruppen festlegen, die alle X Minuten
    ' abgerufen werden sollen (mehrere durch ; trennen). Mit dem
    ' Programmcode "ListSyncObjects" können Sie die Namen ermitteln.
    '---------------------------------------------------------------------
    Const strGroup As String = "Arcor;Strato"
 
    Dim objSync As Outlook.SyncObject
    Dim arySync() As String
    Dim lngSync As Long
 
    '---------------------------------------------------------------------
    ' Datenfeld mit den definierten Übermittlungsgruppen erstellen
    '---------------------------------------------------------------------
    arySync() = Split(strGroup, ";")
 
    '---------------------------------------------------------------------
    ' Alle definierten Übermittlungsgruppen abarbeiten
    '---------------------------------------------------------------------
    For lngSync = 0 To UBound(arySync)
 
        '-----------------------------------------------------------------
        ' Übermittlungsgruppe referenzieren
        '-----------------------------------------------------------------
        Set objSync = Outlook.Session.SyncObjects(arySync(lngSync))
 
        '-----------------------------------------------------------------
        ' Gibt es die Übermittlungsgruppe (noch), wird sie syncronisiert
        '-----------------------------------------------------------------
        If Not objSync Is Nothing Then objSync.Start
 
    Next
 
    '---------------------------------------------------------------------
    ' Clean Up
    '---------------------------------------------------------------------
    Erase arySync()
    Set objSync = Nothing
 
End Sub
 
Private Sub ListSyncObjects()
 
    '=====================================================================
    ' Bitte Cursor zwischen "Private Sub ListSyncObjects" und "End Sub"
    ' stellen. Danach bitte "Strg+G" und anschließend "F5" drücken.
    ' (c) Peter Marchert - http://www.outlook-stuff.com
    ' 2008-12-05 Version 1.0.0
    '=====================================================================
 
    Dim objSyncs As Outlook.SyncObjects
    Dim objSync As Outlook.SyncObject
    Dim lngLoop As Long
 
    Set objSyncs = Outlook.Session.SyncObjects
 
    For Each objSync In objSyncs
        Debug.Print objSync
    Next
 
    '---------------------------------------------------------------------
    ' Clean Up
    '---------------------------------------------------------------------
    Set objSync = Nothing
    Set objSyncs = Nothing
 
End Sub