2012-04-19 36 views
3

我通过选择“跟进 - 标记完成选项”将邮件移动到其他文件夹。 现在我想编写一个程序来检查我今天完成的许多电子邮件,比较Flag完成日期和今天的日期。如何访问标记完成日期?

但我无法找到如何访问旗完成日期。

能否请你帮忙。

感谢, 阿洛克

回答

0

您可以通过使用expression.FlagStatus

请参阅此链接

主题访问标志:FlagStatus物业

链接http://msdn.microsoft.com/en-us/library/aa212013%28v=office.11%29.aspx

例如,这会给你的所有选择电子邮件的状态

OUTLOOK VBA代码

Option Explicit 

Sub Sample() 
    Dim Messages As Selection 
    Dim Msg As MailItem 
    Dim NamSpace As NameSpace 

    Set NamSpace = Application.GetNamespace("MAPI") 
    Set Messages = ActiveExplorer.Selection 

    If Messages.Count = 0 Then Exit Sub 

    For Each Msg In Messages 
     Debug.Print Msg.FlagStatus 
    Next 
End Sub 

对于消息(S)与No flags它会给你一个0

Mark Completed它会给你1

Other flags它会给你2

因此,您实际上可以使用If语句来检查.FlagStatus属性和邮件日期以实现所需。

HTH

+0

邮件日期是否反映了状态更改的时间? – 2012-04-19 19:29:19

+0

Doug,你的意思是改变标志也会改变日期吗?如果是,则不,标志状态不会改变电子邮件日期。 – 2012-04-19 19:34:02

+0

是的,这就是我的意思。我问,因为OP想知道哪些标志今天改变了,我想。你的答案显示如何做到这一点? – 2012-04-19 19:38:31

4

该物业是Outlook.MailItem.TaskCompletedDate。尝试类似:

Sub GetCompletedToday() 
Dim olNameSpace As Outlook.NameSpace 
Dim olFolder As Outlook.Folder 
Dim olMailItem As Outlook.MailItem 
Dim CompletedTodayCount As Long 

Set olNameSpace = Application.GetNamespace("MAPI") 
Set olFolder = olNameSpace.Folders(1).Folders("tester") 

For Each olMailItem In olFolder.Items 
    If olMailItem.TaskCompletedDate = Date Then 
     CompletedTodayCount = CompletedTodayCount + 1 
    End If 
Next olMailItem 
Debug.Print CompletedTodayCount 
End Sub 
+0

这工作。非常感谢你。 – user1344815 2012-04-24 07:38:35