2013-10-16 73 views
1

之前标志着一个新的邮件作为一个任务我已经试过这样:展望VBA发送

Sub SendAwaitingResponse() 
    Dim mail As MailItem 
    Set mail = Outlook.Application.ActiveInspector.CurrentItem 
    mail.MarkAsTask (olMarkToday) 
    mail.Categories = "Awaiting Response" 
    mail.Send 
End Sub 

,出现以下错误:

Draft Items cannot be marked. MarkAsTask is only valid on items that have been sent or received.

它可以点击“跟进”,在UI,然后邮件将在发送后标记为任务。我没有办法以编程的方式做到这一点。

回答

1

创建相关的按钮宏“发送等待回应”,以纪念与自定义属性发送的电子邮件:

Sub SendAwaitingResponse() 
    Dim Mail As MailItem 
    Set Mail = Outlook.Application.ActiveInspector.CurrentItem 
    Dim Property As UserProperty 
    Set Property = Mail.UserProperties.Add("FlagAwaitingResponse", olYesNo) 
    Property.Value = True 
    Mail.Send 
End Sub 

里面ThisOutlookSession对象,订阅条目添加到发送邮件文件夹。用自定义属性标记的项目将被标记为Outlook任务。

Private WithEvents Items As Outlook.Items 

Private Sub Application_Startup() 
    Dim SentItems As Folder 
    Set SentItems = Outlook.Application.GetNamespace("MAPI").GetDefaultFolder(olFolderSentMail) 
    Set Items = SentItems.Items 
End Sub 

Private Sub Items_ItemAdd(ByVal Item As Object) 
    Dim Mail As MailItem 
    Set Mail = Item 

    Set Property = Mail.UserProperties("FlagAwaitingResponse") 
    If Property Is Nothing Then Exit Sub 

    Mail.Categories = "Awaiting Response" 
    Mail.MarkAsTask (olMarkToday) 
    Mail.Save 
End Sub 

不要忘记启用Outlook宏以使其工作。

1

即使在已发送邮件文件夹中,您也需要将其列入Items.ItemAdd,并在传递给事件处理程序的消息上调用MarkAsTask。