私はリストにカスタムプロパティをリストしていますが、そのプロパティが変更されたときに特定のイベントを実行したいと思います。 olFolderToDo
のすべてのアイテムのCustomPropertyChange
イベントを処理するイベントハンドラを作成する方法、またはアイテムにイベントハンドラをプログラムで追加して、新しいアイテムがフォルダに追加されたときにイベントハンドラを追加する方法はありますか?プログラムでアイテムにイベントハンドラを追加
私は過去にこのコードを、フォルダの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
なぜ各Outlookアイテムを購読しているのが別の理由ですか?物事を遅くするか? – Empiromancer
もちろん...できるだけ早くCOMオブジェクトを解放し、常にそれらを生かし続けるのを避けなければなりません。 –