大家早上好,
我希望我可以请你帮忙。我在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等)
我开始绝望了,似乎无法找到原因。任何帮助,想法,解决方案,任何事情都会非常感激。
谢谢大家!
答案 0 :(得分: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