我给我的一些项目列出一个自定义属性,并且我想在该属性更改时执行某个事件。有没有办法编写一个事件处理程序来处理事件olFolderToDo
中的所有项目,或者以编程方式向项目中添加事件处理程序,以便在添加新项目时添加事件处理程序?将事件处理程序添加到项目编程
我笨拙地处理了这个问题,把我的代码放在文件夹的ItemsChange
的事件处理程序中,然后检查属性的值(例如,当我想在任务被标记时触发一个动作完成后,我注意物品的变化,然后检查物品是否标记为完成),但这并不处理对属性的任意更改,并且需要仔细处理以避免连续多次发射。什么我目前做
例子:
Public WithEvents Items As Outlook.Items
Private Sub Application_Startup()
Set Items = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderToDo).Items
End Sub
Private Sub Items_ItemChange(ByVal Item As Object)
If TypeOf Item Is Outlook.TaskItem Then
If Item.Status = olTaskComplete Then
DoTheThing
End If
ElseIf TypeOf Item Is Outlook.MailItem Then
If Item.FlagStatus = olFlagComplete Then
DoTheThing
End If
End If
End Sub
为什么订阅每个展望项目单独是一个坏主意?它会减慢速度吗? – Empiromancer
当然......您必须尽快释放COM对象,并避免让它们始终处于活动状态。 –