Excel 和 Outlook 2016 中的“对象 '_mailItem' 的方法 'body' 失败”错误

Posted

技术标签:

【中文标题】Excel 和 Outlook 2016 中的“对象 \'_mailItem\' 的方法 \'body\' 失败”错误【英文标题】:"Method 'body' of object'_mailItem' failed" error in Excel and Outlook 2016Excel 和 Outlook 2016 中的“对象 '_mailItem' 的方法 'body' 失败”错误 【发布时间】:2017-10-01 09:22:26 【问题描述】:

我在 Excel 2010 中编写了一个程序,用于筛选选定 Outlook 2010 文件夹中的电子邮件,并从电子邮件 (html) 正文中提取信息。

我更新到 Office 2016。从那时起,我在使用 MailItem 对象的某些属性时遇到错误。我可以将电子邮件的主题拉入 Excel,但某些属性会导致“对象'_mailItem 的方法'正文'”失败错误(包括 .Body 和 .To 属性)。

下面是简化版的代码:

Sub GatherInfo()

Dim ObjOutlook As Object
Dim MyNamespace As Object
Dim FormFolder As Object

Set ObjOutlook = GetObject(, "Outlook Application")
Set MyNamespace = ObjOutlook.GetNamespace("MAPI")
Set FormFolder = MyNamespace.PickFolder

For i = 1 To FormFolder.Items.Count

    Range("A2").Select
    ActiveCell.Value = FormFolder.Items(i).Subject
    ActiveCell.Offset(0, 1).Value = FormFolder.Items(i).To

End Sub

这会导致:

运行时错误“-2147467259(80004005)”: 对象'_MailItem'的方法'To'失败

我做了一些研究,想知道 Outlook 2016 的安全设置是否应该归咎于此。 这是一个企业电子邮件帐户,在 Exchange 服务器上运行。您认为这会阻止我访问电子邮件的正文/发件人吗?

奇怪的是,电子邮件的主题属性有效,但正文/到属性无效。

我已经排除的事情:

1) 我发送了纯文本和基于 html 的电子邮件,结果相同。 2) 我尝试过早绑定 Outlook 对象(将 ObjOutlook 设置为 Outlook.Application 等)

我确保只有邮件项目,没有日历项目等。

它会在第一次碰到项目时跳闸。到分配。如果我在resume next 中插入一行,那么它将遍历所有电子邮件,但只会记录主题而不是 .To 属性。

【问题讨论】:

Outlook 2016 for mac 还是 windows? 这个答案建议从 Outlook ***.com/a/58964879开始 【参考方案1】:

避免使用多点符号并检查您是否真的有MailItem 对象(您也可以有ReportItemMeetingItem):

set items = FormFolder.Items
For i = 1 To items.Count
  set item = items.Item(i)
  if item.Class = 43 Then
    Range("A2").Select
    ActiveCell.Value = item.Subject
    ActiveCell.Offset(0, 1).Value = item.To
  End If
  set item = Nothing
next
set items = Nothing

【讨论】:

感谢您的想法德米特里。我应该提到我之前尝试过这个(确保只有邮件项目而没有日历等项目)。我尝试了此代码并在到达 item.To 部分时收到了相同的结果。我仍然认为这与对 Outlook 的编程访问有关,因此可能需要解决这个问题...再次感谢您! 在返回错误之前您处理了多少项?它总是同一个项目吗? 它会在第一次碰到项目时跳闸。到分配。如果我插入一行以继续下一个,那么它将遍历所有电子邮件,但只会记录主题而不是 .To 属性。 CC 或 Body 等其他属性是否也有同样的问题? 某些属性有效,例如 .Subject。但是,不是 .To 或 .Body,而 .Body 是我希望能够从 Excel 访问的重要属性。

以上是关于Excel 和 Outlook 2016 中的“对象 '_mailItem' 的方法 'body' 失败”错误的主要内容,如果未能解决你的问题,请参考以下文章

使用 VBA 保存和关闭办公程序(word、excel、access、outlook)以进行备份

从 Excel 打开 Word 文档并将内容粘贴到 Outlook 邮件的正文

Outlook不能预览和打开Excel文件:

根据 Excel 表格中的内容将表格从 Excel 发送给 Outlook 中的特定人员

outlook附件中的excel时,提示:无法创建文件

从 Outlook 下载附件并在 Excel 中打开