2014-09-18 73 views
1

我正在使用Office 2013,並且正在嘗試計算其中一個電子郵件文件夾中的後續項目數量,並將此值寫入單元格。使用Excel VBA計算跟進電子郵件

所以我用添加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 

出於某種原因,我不斷收到跟進算作即使有至少一個電子郵件標記爲後續。

爲了測試我曾嘗試以下:

For Each Msg In itms 
MsgBox Msg.FlagStatus 
Next 

而且電子郵件之一Flagstatus是和同樣顯示了MSGBOX在測試過程中。

當計算UnFlagged電子郵件或標記爲Completed的電子郵件時,該代碼可正常工作。

這對我來說絕對沒有意義。有什麼想法嗎?

+0

這是奇怪的,但我發現這種不同的方式來接近它http://www.jpsoftwaretech.com/searchbox-week-day-2/,可能會幫助 – mrbungle 2014-09-18 22:06:16

+0

@mrbungle我想在您發佈的鏈接中使用該方法,即每個味精如果flagstatus = 2那麼......但我有點希望弄清楚爲什麼我的代碼不工作。 – CaptainABC 2014-09-18 22:19:19

回答

2

MSDN說OlFlagStatus枚舉:

...被棄用,不應在代碼中使用。

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

相反,嘗試MailItem.FlagRequest財產。例如。

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

你可以找到 http://msdn.microsoft.com/en-us/library/office/ff861323(v=office.14).aspx在MSDN上的MailItem.FlagRequest酒店信息。

+0

我正在測試它,但它看起來像使用FlagRequest真的解決了這個問題:) – CaptainABC 2014-09-19 09:50:48

+0

雖然一個問題,使用FlagRequest作爲跟進,跟進和完成項目都計算在內,有沒有辦法區分兩者,因爲我只是想限制郵件標記爲後續。 – CaptainABC 2014-09-19 10:07:42

+0

好吧,我想通了:'itms.Restrict(「[FlagRequest] ='後續'AND [FlagStatus] <> 1」)'或甚至更簡單'itms.Restrict(「[FlagStatus]> 1」)'both在工作中! – CaptainABC 2014-09-19 10:29:39