我已连接到交换服务器,因此有些邮件存储在我的本地Outlook文件中,有些则存储在服务器上。 在Outlook中,该文件夹的项目计数(我想读出)显示13.000个项目。 但是,当我尝试通过VBA遍历项目时:
Sub asdf()
Dim objOutlook As Outlook.Application
Set objOutlook = CreateObject("Outlook.Application")
Dim objMAPIFolder As Object
Dim objFolder As Object
Dim myItem As Outlook.MailItem
Dim archivFolder As Outlook.Folder
Dim subFolder As Outlook.Folder
For Each objMAPIFolder In objOutlook.Session.Folders
For Each objFolder In objMAPIFolder.Folders
If objFolder.Name = "Inbox" Then
Set archivFolder = objFolder
For Each subFolder In archivFolder.Folders
If subFolder.Name = "Folder X" Then
MsgBox subFolder.Items.Count 'should be 13.000 but says 5.000
End If
Next
End If
Next
Next
Set objOutlook = Nothing
End Sub
向我显示5.000。在Outlook中,我可以单击“单击此处以在Microsoft Exchange上查看更多信息”,然后查看其余的邮件。
如何通过VBA遍历基于服务器的邮件?
问候 沃勒
答案 0 :(得分:0)
在扩展MAPI级别(C ++或Delphi)上,您可以open the folder in the online mode访问远程存储的消息。
在使用VBA(或其他语言,例如C#或VB.Net)的情况下,如果可以选择使用Redemption,则它可以以在线模式打开文件夹(其RDOSession。{ {1}}方法允许传递GetFolderFromID
标志):
MAPI_NO_CACHE