Как отменить напоминание после отправки повторяющегося электронного письма через VBA?
Мне удалось создать повторяющееся электронное письмо с помощью кода в vba, который срабатывает каждый раз, когда срабатывает напоминание с определенной категорией.
http://www.slipstick.com/developer/send-email-outlook-reminders-fires/
Мой вопрос, как я могу отклонить напоминание после отправки электронного письма? когда я добавляю строку напоминания (1). Отключить код разрывы в этой точке.
если я продолжу выполнение, напоминание наконец появится в outlook.
Похоже, что макрос напоминаний приложения необходимо завершить, чтобы выполнить событие напоминания.
1 ответ
Согласно MSDN Applcation.Reminder
Используемое событие Макросы Slipstick выполняются до появления диалогового окна напоминаний. Но Reminder.Dismiss
Метод требует, чтобы напоминание (не уверенное, должно ли оно быть тем же самым) уже отображено в диалоговом окне напоминания. Вот почему это не работает. Тем не менее, AFAIK нет никаких гарантий, что Reminders(1)
будет напоминанием, что только что уволен; Возможно, вы пытаетесь отклонить неправильное напоминание.
В качестве возможного решения (которое я должен подчеркнуть, я не проверял), попробуйте использовать Reminders.Remove(Item.Subject)
, Документация, кажется, указывает на то, что Reminders.Remove
требуется числовой индекс, но стоит попробовать. Кроме того, если два предмета с напоминаниями имеют одинаковую тему, нет гарантии, что вы получите правильный.
Просто был этот вопрос сам. Идея j_foster's, кажется, работает хорошо. Однако лучше использовать идентификатор записи элемента встречи, чтобы определить индекс уведомления. Тогда можно использовать remove()
,
Увидеть ниже:
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