VBA Outlook Mailitem - 不显示所有项目
Posted
技术标签:
【中文标题】VBA Outlook Mailitem - 不显示所有项目【英文标题】:VBA Outlook Mailitem - not displaying all items 【发布时间】:2014-07-23 02:09:25 【问题描述】:下面的代码不会收到我在收件箱中的所有电子邮件。
我列表框中的第一项是昨天和 2014 年 4 月 22 日最后一封电子邮件 - 尽管我的邮箱包含的远不止这些。
Sub CheckEmail()
On Error Resume Next
Dim outApp As Outlook.Application
Dim outNs As Outlook.Namespace
Dim outFldr As Outlook.MAPIFolder
Dim outEmail As Outlook.MailItem
Dim p As Integer
p = 0
Set outApp = CreateObject("Outlook.Application")
Set outNs = outApp.GetNamespace("MAPI")
Set outFldr = outNs.GetDefaultFolder(olFolderInbox)
Dim searcht As String
'find search string
' do search
For Each outEmail In outFldr.Items
With fmShowsInboxEmails.ListBox1
.AddItem outEmail.EntryID
.List(p, 1) = outEmail.ReceivedTime
.List(p, 2) = outEmail.Subject
.List(p, 3) = outEmail.SenderEmailAddress
.List(p, 4) = outEmail.Attachments.Count
End With
p = p + 1
Next outEmail
On Error GoTo 0
Set outApp = Nothing
Set outNs = Nothing
Set outFldr = Nothing
Set outEmail = Nothing
fmShowsInboxEmails.Show
End Sub
【问题讨论】:
您是否注意到未列出的电子邮件的任何具体内容? 我没有注意到!有些今天,然后它似乎列出了每封电子邮件,直到最后一个然后停止。 一个列表框只能容纳这么多项目,65534。返回了多少? 在收到第一封电子邮件时,我在家中设置了工作交换电子邮件。 明显的调试就是去掉你的On Error Resume Next
语句。几乎没有充分的理由使用它,尤其是当您尝试调试函数输出中的特性时。
【参考方案1】:
我认为 Outlook 只计算本地存储在脱机文件夹中的项目 - 因此存储在服务器上的邮件不会成为 outFldr.Items 的一部分
【讨论】:
【参考方案2】:"下一个 outEmail 的类型不匹配"
收件箱中的项目不必是邮件。
一旦您将 outEmail 作为变体进行调暗,请在添加到列表框之前测试 outEmail 是一个邮件项。
【讨论】:
以上是关于VBA Outlook Mailitem - 不显示所有项目的主要内容,如果未能解决你的问题,请参考以下文章
使用VBA在Outlook中打开邮件项目的“添加提醒...”对话框?
Outlook.MailItem.EntryID 和 Mapi32.dll MessageID 之间的区别