2013-05-17 75 views
1

我需要一些帮助。我设法使用VB和SendItem在Outlook中创建任务。我的问题是我正在使用的代码是创建两个任务,而不仅仅是我想要的。Outlook添加任务

我尝试删除.Save,因为我认为这是原因,但它仍然增加了两项任务。我在代码中添加了断点,以确保它不会因为一些不明确的原因而循环两次,而只执行一次。

将不胜感激有人告诉我明显的请

代码片段:

`If bNotFount = False Then 
     Set Ns = Application.GetNamespace("MAPI") 
     Set ItemT = GetCurrentItem() 
     Set taskFolder = Ns.GetDefaultFolder(olFolderTasks) 
     Set olTask = Ns.GetDefaultFolder(olFolderTasks).Items.Add(olTaskItem) 
     With olTask 
      .Subject = ItemT.Subject 
      .Attachments.Add ItemT 
      .Body = ItemT.Body 
      .DueDate = Now + 1 
      .Move taskFolder 
      .Save 
      .Display 'show the task to add notes 
     End With 
    End If' 

回答

0

你并不需要把它移动到默认任务文件夹,因为你保存它反正有。 只需删除.Move taskFolder一行即可。

我更新了你的代码:

Private Sub Application_ItemSend(Item As Object, ByRef Cancel As Boolean) Handles Application.ItemSend 

    Dim ns As Outlook.NameSpace 
    Dim taskFldr As Outlook.Folder 
    Dim olTask As Outlook.TaskItem 
    ' If bNotFount = False Then 
     Ns = Application.GetNamespace("MAPI") 

     taskFldr = ns.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderTasks) 
    olTask = taskFldr.Items.Add 
     With olTask 
     .Subject = Item.Subject 
     .Attachments.Add(Item) 
     .Body = Item.Body 
     .DueDate = Now + 1 
     .Save() 
     .Display() 'show the task to add notes 
     End With 
    ' End If 
    End Sub 
+0

优秀!非常感谢。工作过一种享受! –

+0

如果您使用Move,请记住它会返回新项目。您必须立即丢弃旧对象:olTask​​ = olTask​​.Move(SomeFolder) –