Alle E-Mails als gelesen markieren
Wer mehrere Ordner gleichzeitig als gelesen markieren möchte, erreicht das mit diesem Codebeispiel. Fügen Sie dazu in der Prozedur "MarkItemsAsRead" für jeden Ordner eine neue Zeile mit "Call MarkAsRead(...)" hinzu. Vergessen Sie aber bitte nicht, die entsprechenden Zeilen durch das Entfernen des Hochkommas zu aktivieren.
Zur Verwendung dieses Beispiels beachten Sie bitte die wichtigen Hinweise, sowie den Workshop VBA in Outlook® verwenden. Den Code bitte in ein neues Modul kopieren (Einfügen -> Modul im VBA-Editor).
Ab Outlook® 2000
Option Explicit Public Sub MarkItemsAsRead() '===================================================================== ' Markiert alle Elemente in Ordnern als gelesen ' (c) Peter Marchert - http://www.outlook-stuff.com ' 2009-02-01 Version 1.0.0 '===================================================================== '--------------------------------------------------------------------- ' Alle Elemente des Posteingangs als gelesen markieren '--------------------------------------------------------------------- Call MarkAsRead(Outlook.Session.GetDefaultFolder(olFolderInbox)) '--------------------------------------------------------------------- ' Mit "GetDefaultFolder" wird immer auf den Standardspeicher zugegriffen. ' Wenn Sie mehrere Pst-Dateien bzw. Speicher haben, so verwenden Sie ' bitte die folgende Syntax, um auf andere Speicher zuzugreifen. ' Kommentieren Sie die nachfolgende Zeile aus und passen Sie gegebenen- ' falls die Zahl 1 und die Ordnernamen an (siehe auch "ListFolders"). '--------------------------------------------------------------------- 'Call MarkAsRead(Outlook.Session.Folders(1).Folders("Posteingang").Folders("1")) '--------------------------------------------------------------------- ' Haben Sie eine tiefere Ordnerstrucktur, so hängen Sie jeweils den ' Unterordner mit einem weiteren "Folders" an. Z. B. '--------------------------------------------------------------------- 'Call MarkAsRead(Outlook.Session.Folders(1).Folders("Posteingang").Folders("1").Folders("2")) '--------------------------------------------------------------------- ' Alle Elemente des aktuellen Ordners als gelesen markieren '--------------------------------------------------------------------- 'Call MarkAsRead(Outlook.ActiveExplorer.CurrentFolder) End Sub Private Sub MarkAsRead(ByVal objFolder As Object) '===================================================================== ' Markiert alle Elemente in dem Ordner "objFolder" als gelesen '===================================================================== Dim objItems As Outlook.Items Dim objItem As Object On Error Resume Next '--------------------------------------------------------------------- ' Alle Elemente des Ordners referenzieren '--------------------------------------------------------------------- Set objItems = objFolder.Items '--------------------------------------------------------------------- ' Alle Elemente bearbeiten '--------------------------------------------------------------------- For Each objItem In objItems '----------------------------------------------------------------- ' Als gelesen markieren '----------------------------------------------------------------- If objItem.UnRead Then objItem.UnRead = False Next '--------------------------------------------------------------------- ' Clean Up '--------------------------------------------------------------------- Set objItem = Nothing Set objItems = Nothing Set objFolder = Nothing End Sub Private Sub ListFolders() '===================================================================== ' Listet alle vorhandenen Speicher im Direktfenster auf. Um das Direkt- ' fenster zu öffnen, drücken Sie bitte Strg+G. '===================================================================== Dim objFolder As Object Dim lngCounter As Long For Each objFolder In Outlook.Session.Folders lngCounter = lngCounter + 1 Debug.Print lngCounter & " - " & objFolder.Name Next Set objFolder = Nothing End Sub