我能够通过 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