2017-08-30 68 views
0

我喜歡將Exchange服務器上每個文件夾中的項目數量與本地Outlook文件中的項目數量進行比較。什麼是VBA屬性:服務器文件夾包含x itmes?

在Outlook中我可以使用以下方法來獲取每個文件夾的項目數

Dim Folder As Outlook.MAPIFolder 
Set Folder = objNS.Folders("xxx").Folders("Inbox") 
Debug.Print Folder.Items.Count 

如何獲取項目計數在服務器上一樣在下面的截圖? enter image description here

回答

1

您需要在聯機模式下打開文件夾並檢索其內容數量。在擴展MAPI(C++或Delphi)中,調用IMAPISession::OpenEntry時需要使用MAPI_NO_CACHE位 - 您可以在OutlookSpy中使用該位:單擊IMAPIFolder按鈕,選擇PR_ENTRYID屬性,右鍵單擊,選擇IMAPISession :: OpenEntry,確保檢查MAPI_NO_CACHE 。

在++比C等語言或Delphi情況下,你可以使用Redemption - 它的GetFolderFromIDGetMessageFromID版本等放行由IMAPISession::OpenEntry使用標誌。

MAPI_NO_CACHE = &H0200 
MAPI_BEST_ACCESS = &H0010 
set OomFolder = Application.ActiveExplorer.CurrentFolder 
set Session = CreateObject("Redemption.RDOSession") 
Session.MAPIOBJECT = Application.Session.MAPIOBJECT 
set RdoFolder = Session.GetFolderFromID(OomFolder.EntryID, , MAPI_NO_CACHE Or MAPI_BEST_ACCESS) 
MsgBox "Number of items in the online folder: " & RdoFolder.Items.Count 
+0

感謝您的支持。我將無法測試它,所以我不會將其標記爲答案。你的回答啓發了我的解決方法:我只需在在線模式下再次設置同一個電子郵件帳戶,然後使用上面的代碼計算每個文件夾中的郵件(這與服務器上的郵件完全相同)。然後我可以將它與離線帳戶中的本地文件夾進行比較。這不是完美的解決方案,但它會完成這項工作。 – Edgar

相關問題