
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.Reminder
eventoSe ejecutan las macros de Slipstick utilizadas.antesAparece el cuadro de diálogo de recordatorios. Pero elReminder.Dismiss
mé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.Remove
Requiere 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