2017-08-30 65 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

相关问题