【发布时间】:2014-06-05 23:47:55
【问题描述】:
每当前置任务被标记为已完成时,我都希望收到来自 MS Project 的电子邮件通知。我希望它通过电子邮件发送预先指定的资源和项目经理。我不知道从哪里开始。
【问题讨论】:
标签: vba outlook ms-project
每当前置任务被标记为已完成时,我都希望收到来自 MS Project 的电子邮件通知。我希望它通过电子邮件发送预先指定的资源和项目经理。我不知道从哪里开始。
【问题讨论】:
标签: vba outlook ms-project
假设“发送电子邮件”是指通过 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 对象库引用。
【讨论】: