-1

Outlook のタスク管理用に VBScript を使用してソリューションを開発しています。

私の問題は、Outlook タスクが完了としてマークされたときに電子メール通知を送信しようとすることです。

テストに次のコードを使用しますが、問題は、タスクが完了に変更されると、これらの 3 つのプロパティが自動的に変更されることです。

  • パーセントプロパティ
  • 完全なプロパティ
  • ステータス プロパティ。

その結果、タスクが完了としてマークされると、3 つの電子メールが送信されます。

タスクが完了したときに電子メール通知を 1 つだけ送信するにはどうすればよいですか?

以下は私のコードですが、メールを送信してプロパティの変更を提示するようになりました

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 ステートメントを使用する必要があります。最初にアイテムのステータスを確認し、アイテムのステータスを確認した後、たとえば、percentcomplete を確認します。それが永遠に実行されない限り。例は上記の私の問題でした。誰かがそれを使用したい場合は、コードを見つけてください

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 に答える