首页 文章

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

提问于
浏览
0

大家,早安,

我希望我可以请你帮忙 . 我在Excel 2010中编写了一个程序来筛选所选Outlook 2010文件夹中的电子邮件,并从电子邮件(html)正文中提取信息 . 最近,我更新到Office 2016.从那时起,我在使用MailItem对象的某些属性时出错 . 我可以将电子邮件的主题拉到Excel中,但某些属性会导致“object'_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对象(Dim ObjOutlook作为Outlook.Application等)

我开始在这里绝望了,似乎无法找到原因 . 任何帮助,想法,解决方案,任何事情都会受到如此赞赏 .

谢谢大家!

1 回答

  • 0

    避免使用多点符号并检查你是否真的有一个 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
    

相关问题