Alle E-Mails als gelesen markieren

Zuletzt geändert am 03. April 2013

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