Guten Morgen allerseits
Ich hoffe, ich kann dich um Hilfe bitten. Ich habe ein Programm in Excel 2010 geschrieben, um E-Mails in einem ausgewählten Outlook 2010-Ordner zu durchsuchen und Informationen aus dem E-Mail-Text (HTML) abzurufen. Kürzlich wurde ich auf Office 2016 aktualisiert. Seitdem bekomme ich einen Fehler, wenn ich bestimmte Eigenschaften des MailItem-Objekts verwende. Ich kann den Betreff der E-Mail nach Excel ziehen, aber bestimmte Eigenschaften verursachen eine "Methode" des Objekts Fehler "_mailItem" (einschließlich der Eigenschaften .Body und .To). Hier ist eine vereinfachte Version des Codes, den ich nur zur Diagnose dieses Problems verwende:
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
Das führt zu: Laufzeitfehler "-2147467259 (80004005)": Methode "An" des Objekts "_MailItem" ist fehlgeschlagen
Ich habe etwas recherchiert und frage mich, ob OutlookDie Sicherheitseinstellungen 2016 könnten daran schuld sein. Dies ist ein Firmen-E-Mail-Konto, das auf einem Exchange-Server ausgeführt wird. Denken Sie, dass ich daran gehindert werden könnte, auf den Körper / Absender der E-Mail zuzugreifen? Es ist nur merkwürdig, dass die Betreffseigenschaft der E-Mail funktioniert, nicht aber der Körper / die Eigenschaften.
Dinge, die ich ausgeschlossen habe:
1) Ich habe sowohl Klartext- als auch HTML-basierte E-Mails mit dem gleichen Ergebnis gesendet.
2) Ich habe versucht, die Outlook-Objekte frühzeitig zu binden (Dim ObjOutlook als Outlook.Application usw.).
Ich fange an, hier verzweifelt zu werden, und kann die Ursache nicht finden. Jede Hilfe, Ideen, Umgehungsmöglichkeiten, alles wäre so dankbar.
Danke euch allen!
Antworten:
0 für die Antwort № 1Vermeiden Sie die Verwendung mehrerer Punkte und prüfen Sie, ob Sie wirklich eine MailItem
Objekt (können Sie auch haben ReportItem
oder 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