¿Cómo descartar un recordatorio después de enviar un correo electrónico recurrente a través de VBA?

¿Cómo descartar un recordatorio después de enviar un correo electrónico recurrente a través de VBA?

Pude crear un correo electrónico recurrente a través de un código en vba que se activa cada vez que se activa un recordatorio con una determinada categoría.

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

Mi pregunta es ¿cómo descarto el recordatorio después de enviar el correo electrónico? cuando agrego la línea recordatorios (1). Descarte los saltos de código en ese punto.

si sigo con la ejecución del recordatorio finalmente aparece en outlook.

Parece que la macro de recordatorios de la aplicación debe finalizar para ejecutarse para poder descartar el evento de recordatorio.

Respuesta1

Según MSDN elApplcation.RemindereventoSe ejecutan las macros de Slipstick utilizadas.antesAparece el cuadro de diálogo de recordatorios. Pero elReminder.Dismissmétodorequiere que ya se muestre un recordatorio (no estoy seguro si tiene que ser el mismo) en el cuadro de diálogo de recordatorio. Por eso esto no funciona. Dicho esto, AFAIK no hay garantía de que Reminders(1)sea el recordatorio que acaba de dispararse; es posible que esté intentando descartar el recordatorio incorrecto.

Como posible solución (que debo enfatizar,no he probado), intenta usar Reminders.Remove(Item.Subject). La documentación parece indicar queReminders.RemoveRequiere el índice numérico, pero vale la pena intentarlo. Además, si dos elementos con recordatorios tienen el mismo tema, no hay garantía de que obtenga el correcto.

Respuesta2

Yo mismo acabo de tener este problema. La idea de j_foster parece funcionar bien. Sin embargo, es mejor utilizar el ID de entrada del elemento de la cita para identificar el índice de la notificación. Entonces uno puede usar remove().

Vea abajo:

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

información relacionada