使用Excel VBA计算跟进电子邮件

时间:2014-09-18 21:23:11

标签: excel vba excel-vba outlook outlook-vba

我正在使用Office 2013,我正在尝试计算其中一个电子邮件文件夹中的后续项目,并且此值将写入单元格。

所以我在添加Outlook对象库引用后使用以下代码:

Dim Folder As Outlook.MAPIFolder

Dim objOL As Outlook.Application
Set objOL = New Outlook.Application

MailboxName = "mymailboxhere"
Main_Folder_Name = "Inbox"
Sub_Folder_Name = "Test"

Set Folder = Outlook.Session.Folders(MailBoxName).Folders(Main_Folder_Name).Folders(Sub_Folder_Name)

Dim itms As Outlook.Items
Set itms = Folder.Items

Dim FollowupItms As Outlook.Items
Set FollowupItms = itms.Restrict("[FlagStatus] = 2")

Followup = FollowupItms.Count
Worksheets("Sheet1").Range("A1").Value = Followup

出于某种原因,即使至少有一封电子邮件被标记为后续,我仍然会将跟进计数设为 0

为了测试我已尝试过以下内容:

For Each Msg In itms
MsgBox Msg.FlagStatus
Next

其中一封电子邮件的Flagstatus 2 ,测试期间在Msgbox中显示相同内容。

在计算UnFlagged的电子邮件或标记为已完成的电子邮件时,代码可以正常工作。

这对我来说毫无意义。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

MSDN说OlFlagStatus枚举:

  

...已弃用,不应在您的代码中使用。

(详见http://msdn.microsoft.com/en-us/library/microsoft.office.interop.outlook.olflagstatus(v=office.14).aspx

相反,请尝试MailItem.FlagRequest属性。 E.g。

Set FollowupItms = itms.Restrict("[FlagRequest] = 'Follow up'")

您可以在MSDN上找到有关MailItem.FlagRequest属性的信息 http://msdn.microsoft.com/en-us/library/office/ff861323(v=office.14).aspx