如何在通过 vba 发送定期电子邮件后关闭提醒?

如何在通过 vba 发送定期电子邮件后关闭提醒?

我能够通过 vba 中的代码创建定期电子邮件,每次触发特定类别的提醒时都会触发该电子邮件。

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

我的问题是,如何在发送电子邮件后关闭提醒?当我添加行提醒(1)。关闭时,代码会中断。

如果我继续执行,提醒最终会出现在 Outlook 中。

看来,应用程序提醒宏需要完成执行才能消除提醒事件。

答案1

根据 MSDNApplcation.Reminder事件使用 Slipstick 的宏执行出现提醒对话框。但Reminder.Dismiss方法要求提醒对话框中已经显示提醒(不确定是否必须是同一个提醒)。这就是它不起作用的原因。话虽如此,据我所知,不能保证这Reminders(1)将是刚刚触发的提醒;您可能试图关闭错误的提醒。

作为一种可能的解决方案(我必须强调,我还没有测试过),请尝试使用Reminders.Remove(Item.Subject)。文档似乎表明Reminders.Remove需要数字索引,但值得一试。另外,如果两个带有提醒的项目有相同的主题,则不能保证您会得到正确的项目。

答案2

我自己也遇到过这个问题。j_foster 的想法似乎很有效。但是最好使用约会项目的条目 ID 来标识通知的索引。然后可以使用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

相关内容