Excel和Outlook 2016 - 方法' body'对象' _mailItem'失败错误

时间:2017-05-03 13:41:57

标签: excel vba email import outlook

大家早上好,

我希望我可以请你帮忙。我在Excel 2010中编写了一个程序来筛选所选Outlook 2010文件夹中的电子邮件,并从电子邮件(html)正文中提取信息。最近,我更新到Office 2016.从那时起,我在使用MailItem对象的某些属性时收到错误。我可以将电子邮件的主题拉到Excel中,但某些属性会导致"方法' body'对象' _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)': 方法' To'对象' _MailItem'失败

我已经完成了一些研究,并想知道Outlook 2016安全设置是否应该受到责备。这是在Exchange服务器上运行的企业电子邮件帐户。你认为这可能阻止我访问电子邮件的正文/发件人吗?电子邮件的主题属性有效,但不是主体/属性,这很奇怪。

我排除的事情:

1)我发送了同样结果的纯文本和基于HTML的电子邮件。
2)我尝试过早地绑定Outlook对象(Dim ObjOutlook作为Outlook.Application等)

我开始绝望了,似乎无法找到原因。任何帮助,想法,解决方案,任何事情都会非常感激。

谢谢大家!

1 个答案:

答案 0 :(得分: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