wie kann ich eine Erinnerung nach dem Senden einer wiederkehrenden E-Mail per VBA löschen?

wie kann ich eine Erinnerung nach dem Senden einer wiederkehrenden E-Mail per VBA löschen?

Ich konnte über einen VBA-Code eine wiederkehrende E-Mail erstellen, die jedes Mal ausgelöst wird, wenn eine Erinnerung einer bestimmten Kategorie ausgelöst wird.

http://www.slipstick.com/developer/send-email-outlook-reminders-fires/

Meine Frage lautet: Wie kann ich die Erinnerung löschen, nachdem die E-Mail gesendet wurde? Wenn ich die Zeile „reminders(1).Dismit“ hinzufüge, wird der Code an dieser Stelle unterbrochen.

wenn ich mit der Ausführung fortfahre erscheint die Erinnerung schließlich in Outlook.

Es scheint, dass das Anwendungserinnerungsmakro vollständig ausgeführt werden muss, um das Erinnerungsereignis zu verwerfen.

Antwort1

Laut MSDN ist dieApplcation.ReminderEreignisverwendete Slipstick-Makros werden ausgeführtVorDer Erinnerungsdialog erscheint. Aber dieReminder.DismissMethodeerfordert, dass im Erinnerungsdialog bereits eine Erinnerung angezeigt wird (nicht sicher, ob es dieselbe sein muss). Deshalb funktioniert das nicht. Allerdings gibt es meines Wissens nach keine Garantie dafür, dass es sich um Reminders(1)die Erinnerung handelt, die gerade ausgelöst wurde; möglicherweise versuchen Sie, die falsche Erinnerung zu verwerfen.

Als mögliche Lösung (die ich betonen muss,Ich habe nicht getestet), versuchen Sie es mit Reminders.Remove(Item.Subject). Die Dokumentation scheint darauf hinzuweisen, dassReminders.Removeerfordert den numerischen Index, aber einen Versuch ist es wert. Wenn zwei Elemente mit Erinnerungen denselben Betreff haben, besteht außerdem keine Garantie, dass Sie das richtige Element erhalten.

Antwort2

Ich hatte gerade selbst dieses Problem. Die Idee von j_foster scheint gut zu funktionieren. Es ist jedoch besser, die Eintrags-ID des Terminelements zu verwenden, um den Index der Benachrichtigung zu identifizieren. Dann kann man verwenden remove().

Siehe unten:

Private Sub Application_Reminder(ByVal Item As Object)
    If TypeOf Item Is AppointmentItem Then
        'Do Something...

        'Loop over all reminders and find index of appt
        Dim appt As AppointmentItem: Set appt = Item
        Dim i As Integer: i = 0
        Dim notif As reminder
        For Each notif In Application.Reminders
            i = i + 1
            If notif.Item.EntryID = appt.EntryID Then
                Call Application.Reminders.Remove(i)
                Exit For
            End If
        Next
    End If
End Sub

verwandte Informationen