使用VBA宏从MS Project发送电子邮件通知

时间:2014-04-21 20:27:35

标签: vba outlook microsoft-project-vba

每当前任任务标记为已完成时,我想要来自MS Project的电子邮件通知。我希望它通过电子邮件发送预先指定的资源和项目经理。我不知道从哪里开始。

1 个答案:

答案 0 :(得分:1)

假设通过“发送电子邮件”表示通过Outlook发送电子邮件,则可以使用此方法。 MS Project没有任务级事件,但您可以使用Project_Change事件;你只需要遍历所有任务,看看哪些需要发送电子邮件。

在此示例中,我将收件人的电子邮件地址存储在超链接字段中,并使用Flag1字段指示是否已发送电子邮件。在单击发送按钮之前,电子邮件将保持打开状态供用户查看;保持打开也可以避免弹出消息,用户必须批准对Outlook进行编程访问。

Private Sub Project_Change(ByVal pj As Project)

Dim tsk As Task
Dim succ As Task
Dim ol As Outlook.Application
Dim mail As Outlook.MailItem

For Each tsk In ActiveProject.Tasks
    If tsk.PercentComplete = 100 And Not tsk.Flag1 Then
        If ol Is Nothing Then
            Set ol = GetObject(, "Outlook.Application")
        End If
        For Each succ In tsk.SuccessorTasks
            Set mail = ol.CreateItem(olMailItem)
            mail.To = tsk.Hyperlink
            mail.Subject = "A precedessor task has been completed"
            mail.Body = "Task " & tsk.ID & " which is a predecessor to your task " & succ.ID & " has completed."
            mail.Display
        Next succ
        tsk.Flag1 = True
    End If
    Next tsk

End Sub

注意:请务必添加MS Outlook对象库引用。