2017-05-03 137 views
0

大家早上好的「體」,的Excel和Outlook 2016 - 方法object'_mailItem」失敗錯誤

我希望我可以問你一些幫助。我在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'失敗

我已經做了一些研究,並想知道如果Outlook 2016的安全設置可能是怪罪。這是一個在交換服務器上運行的公司電子郵件帳戶。你認爲這可能會阻止我訪問電子郵件的正文/發件人嗎?這很奇怪,電子郵件的主題屬性起作用,但不是身體/屬性。

事情我已經排除了:

1)我發純文本和HTML電子郵件基礎具有相同的結果。
2)我已經嘗試綁定Outlook對象(Dim ObjOutlook作爲Outlook.Application等)

我開始在這裏變得絕望,似乎無法找到原因。任何幫助,想法,解決辦法,任何事情都會如此讚賞。

謝謝大家!

+0

展望2016年Mac或Windows? – 0m3r

回答

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 
+0

謝謝你的想法德米特里。我應該提到,我以前嘗試過(確保只有郵件和沒有日曆等項目)。我試過這段代碼,並在到達item.To部分時收到相同的結果。我仍然認爲這與編程訪問Outlook有關,因此可能需要解決該問題......再次感謝您! – Emily

+0

在錯誤返回之前,您處理了多少物品?它總是一樣的項目? –

+0

它第一次擊中item.To時會絆倒。如果我插入一行以恢復下一行,那麼它將通過所有電子郵件,但只會記錄主題而不記錄.To屬性。 – Emily

相關問題