| Liebe Outlook-VBA-Gemeinde, ich habe den untenstehenden funktionierenden Code produziert. Seine Funktion: Bei nachverfolgten E-Mails in Outlook (Nachverfolgungs-Flag gesetzt) soll, wenn eine Antwort dazu eintrifft (ereignisgesteuert), automatisch das Nachverfolgungs-Flag entfernt werden. Damit fliegt die E-Mail automatisch bei mir aus der sehr langen Aufgabenliste, was sehr hilfreich ist. Das Ganze ist aber noch ziemlich langsam, weil sämtliche gesendete Objekte in einer For-Next-Schleife überprüft werden. Wie kann ich das beschleunigen, indem ich z. B. die Schleife komplett umgehe? Gerne nehme ich noch weitere Tipps zur Beschleunigung entgegen. Bei der Recherche stieß ich auf folgende zwei Möglichkeiten, die ich aber beide nicht zum Laufen brachte: 
'1.
filterCriteria = "[ConversationID] = """ & receivedMail.ConversationID & """ AND [FlagStatus] = " & olFlagMarked
Set sentMail = sentFolder.Items.Restrict(filterCriteria).Item(1)
'2.
Set sentMail = sentFolder.Items.Find("[ConversationID] = '" & receivedMail.ConversationID & "' AND [FlagStatus] = " & olFlagMarked)Vielen Dank im Voraus für Eure Hilfe! :-) Sepp123   
' In ThisOutlookSession-Modul
Private WithEvents olItems As Outlook.Items
Private Sub Application_Startup()
    ' Variablen initialisieren
    Dim olApp As Outlook.Application
    Dim olNS As Outlook.NameSpace
    Set olApp = Outlook.Application
    Set olNS = olApp.GetNamespace("MAPI")
    ' Ereignisprozedur für ankommende E-Mails
    Set olItems = olNS.GetDefaultFolder(olFolderInbox).Items
End Sub
Private Sub olItems_ItemAdd(ByVal Item As Object)
    If TypeOf Item Is Outlook.MailItem Then
        Dim receivedMail As Outlook.MailItem
        Dim sentMail As Object
        Dim sentFolder As Outlook.Folder
        Set receivedMail = Item
        Set sentFolder = Outlook.Application.GetNamespace("MAPI").GetDefaultFolder(olFolderSentMail)
        For Each sentMail In sentFolder.Items
            If TypeOf sentMail Is Outlook.MailItem And sentMail.ConversationID = receivedMail.ConversationID And sentMail.FlagStatus = olFlagMarked Then
                sentMail.ClearTaskFlag
                sentMail.Save ' Änderungen speichern
                Exit For
            End If
        Next sentMail
    End If
End Sub
 |