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