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
对象(您也可以有ReportItem
或MeetingItem
):
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 邮件的正文