Как отменить напоминание после отправки повторяющегося электронного письма через 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
Другие вопросы по тегам