-1

我为 Outlook 中的任务管理开发了一个使用 VBScript 的解决方案。

我的问题是当 Outlook 任务标记为完成时,我尝试发送电子邮件通知。

我使用以下代码进行测试,但问题是当任务更改为完成时,这会自动更改这 3 个属性:

  • 百分比属性
  • 完整属性
  • 状态属性。

所以结果是当任务被标记为完成时发送了 3 封电子邮件。

如何在任务完成时只发送一封电子邮件通知?

下面是我的代码,但现在发送电子邮件以显示哪些属性更改

Sub Item_PropertyChange(ByVal Name)
    If Item.Status=2 Then
        MsgBox "The " & Name & " property changed."
    End If
End Sub

我的完整代码

Sub Item_PropertyChange(ByVal Name)
    Set oMsg = Application.CreateItem(olMailItem)
    If Item.Status = 2 Then
        With oMsg
            .To = "myemailaddress"
            .Subject = "Task Completed"
            .Body = Item.Subject
            .Send
        End With
    End If
End Sub
4

1 回答 1

2

我的问题的解决方案如下

如果要检查任务是否完成,必须使用 2 个 if 语句。首先检查项目的状态,然后检查项目百分比完成的状态。除非它永远运行。一个例子是我上面的问题。如果有人想使用它,请查找代码

Sub Item_PropertyChange(ByVal Name)
    Set oMsg = Application.CreateItem(olMailItem)
    Set objControl = objPage.Controls("TextBox1")
    Set objPage = Item.GetInspector.ModifiedFormPages("P.2")

    Set objControl = objPage.Controls("TextBox1")
    MyValue= objControl.Value

    'If Statement to Trigegr an action When Task Completed
    'To work correct must have second If Statement.
    'If you check just for Complete = True, it will run forever. 

    If Item.Status = olTaskComplete And Item.IsRecurring = False then
     If Item.PercentComplete = 100 then

        With oMsg   
          .Recipients.Add(MyValue)

          .Subject = "Task Completed "
          .Body = Item.Subject
          .Send
        End With

     end if
    end if

结束子

于 2013-11-16T14:16:38.220 回答