我給我的一些項目列出一個自定義屬性,並且我想在該屬性更改時執行某個事件。有沒有辦法編寫一個事件處理程序來處理事件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對象,並避免讓它們始終處於活動狀態。 –