Vba 如何捕获在没有自定义表单脚本的情况下完成的Outlook 2013任务

Vba 如何捕获在没有自定义表单脚本的情况下完成的Outlook 2013任务,vba,outlook,task,Vba,Outlook,Task,我们已启用,但无法重新启用(公司政策)。正常VBA工作正常 我需要在任务标记为完成时发送电子邮件。当任务标记为“完成”时,如何通知我,以便我可以发送电子邮件?我可以使用任何标准的应用程序事件,但似乎没有一个对我有帮助。谢谢。您可以使用任务文件夹上的Items.ItemChange事件(可以使用Application.Session.GetDefaultFolder(olFolderTasks)检索该事件)。使用了Dmitry Streblechenko提供的指导之后,这就是有效的代码。张贴完整性

我们已启用,但无法重新启用(公司政策)。正常VBA工作正常


我需要在任务标记为完成时发送电子邮件。当任务标记为“完成”时,如何通知我,以便我可以发送电子邮件?我可以使用任何标准的应用程序事件,但似乎没有一个对我有帮助。谢谢。

您可以使用任务文件夹上的
Items.ItemChange
事件(可以使用
Application.Session.GetDefaultFolder(olFolderTasks)
检索该事件)。

使用了Dmitry Streblechenko提供的指导之后,这就是有效的代码。张贴完整性

Public WithEvents myOlItems As Outlook.Items

Public Sub Initialize_handler()
    Set myOlItems = Application.Session.GetDefaultFolder(olFolderTasks).Items
End Sub

Private Sub myOlItems_ItemChange(ByVal Item As Object)
    ' https://docs.microsoft.com/en-us/office/vba/api/outlook.taskitem
    If Item.Class = olTask Then
        If Item.Complete Then
            'Creates a new email item and modifies its properties
            Dim objMail As Outlook.mailItem
            Set objMail = Application.CreateItem(olMailItem)
            With objMail
                .BodyFormat = olFormatHTML
                .To = ""
                .CC = ""
                .HTMLBody = "Stuff"
                .Display
            End With
        End If
    End If
End Sub

希望这能帮助其他想这样做的人。

到目前为止,一切都很好。看起来是个好办法。每天学习有关Outlook编程的更多信息。如果回答回答了您的问题,请将其标记为这样。非常感谢。