您WithEvents
用于处理对象Reminder
上的事件objReminders
,但您没有声明要匹配的子项。在我下面的代码中,请注意objReminders_...
与您的Application_...
潜艇。
我在 Outlook 2003 中使用了您的代码(我没有 Office 2007,因此无法在那里进行测试),并得出以下结论:
Public WithEvents objReminders As Outlook.Reminders
Private Sub objReminders_Snooze(ByVal ReminderObject As Reminder)
Call Send_Email_Using_VBA
MsgBox ("Litigate!")
End Sub
Private Sub Class_Initialize()
Set objReminders = Outlook.Reminders
End Sub
在普通代码模块中用这个实现:
Sub test()
Dim rmd As New ReminderClass
rmd.objReminders.Item(1).Snooze 1 'Triggers objReminders_Snooze in class module
rmd.objReminders.Item(2).Snooze 1
End Sub
现在,这触发了Snooze
我明确调用的事件。但是,这也应该适用于您在事件首次出现时触发(据我所知,这不会在提醒从 a 唤醒时触发Snooze
)。我没有设置任何提醒来测试 - 如果您有除此之外的困难,我将为此设置一些我自己的测试。
Private Sub objReminders_ReminderFire(ByVal ReminderObject As Reminder)
Call Send_Email_Using_VBA
MsgBox ("Litigate!")
End Sub
更新:
在 2010 年玩过这个之后,我发现以下方法可以工作(至少会触发,但它似乎一直在触发):
Private Sub Application_Reminder(ByVal Item As Object)
Call Send_Email_Using_VBA
MsgBox ("Litigate!")
End Sub
这是在ThisOutlookSession
对象模块中设置的。添加这个对你有什么帮助吗?