Bei Outlook-Start nur bestimmte Konten abrufen
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