2014-11-04 88 views
1

我写了一小段代码,检查电子邮件中的附加收件箱(除了我在Outlook中的主要地址)。VBA:并非所有的Outlook电子邮件显示

当在PC上使用代码时,只有附加收件箱添加到Outlook(作为主收件箱)时,问题才显现出来。显然,代码无法检索所有电子邮件,只能检索旧电子邮件。这很尴尬,因为子文件夹甚至电子邮件的路径似乎都可以找到,但不是新的。我可以在Outlook中看到他们没有问题。

有没有人有一个想法,为什么发生这种情况?正如我所说的,相同的代码在带有Outlook-Installation的PC上没有任何问题,另一个主收件箱和收件箱需要作为额外的检查。

这是我用来访问Outlook和电子邮件的代码:

Dim objFolder As Outlook.Folder 
Dim objOL As Outlook.Application 
Set objOL = CreateObject("Outlook.Application")  
Set objFolder = objOL.GetNamespace("MAPI").Folders.Item("[email protected]").Folders.Item("Posteingang").Folders.Item("Subfolder-Name").Folders.Item("Subfolder-Name-2") 
With objFolder.Items(1) 
... 
+0

这个问题是与我相似,但没有得到解决或者有:VBA展望的MailItem - 不显示所有项目](http://stackoverflow.com/questions/24003325/vba-outlook-mailitem-不显示所有项目) – plitvicer 2014-11-05 16:23:05

回答

0

为什么你总是在检索项集合中的第一项?你不想循环的项目?

set objItems = objFolder.Items 
objItems.Sort "[ReceivedTime]" 
'now objItems is sorted 
+0

你是对的。通常我循环。此代码仅用于演示此问题,因为此第一封电子邮件并非最新版本,尽管Outlook中有一个较新版本。 – plitvicer 2014-11-05 15:38:26

+0

你不应该期望第一个项目是最古老的或最新的项目。除非您实际对Items集合进行排序,否则无法保证。看到上面更新的答案 – 2014-11-05 16:04:31

+0

这没有帮助,对不起。 eMails没有按照错误的顺序排序,它们根本就不存在(至少对于VBA)。如果我循环遍历所有电子邮件,则最新的电子邮件不会出现,无论是在列表的开头还是结尾。 – plitvicer 2014-11-05 16:12:50

相关问题