Ошибка при извлечении почты Outlook из Excel - PullRequest
1 голос
/ 23 марта 2020

Мне нужно извлечь все письма, содержащиеся в определенной папке в приложении Outlook. Это код, который я использовал для подключения к папке:

Set OutlookApp = New Outlook.Application
Set OutlookNamespace = OutlookApp.GetNamespace("MAPI")
Set Folder = OutlookNamespace.GetDefaultFolder(olFolderInbox).Folders("XXXXXX")

И это l oop, который я использовал для извлечения писем:

i = 1
For Each MyItem In Folder.Items
    If MyItem.ReceivedTime >= Range("B1").Value Then

        Range("A3").Offset(i, 0).Value = MyItem.Subject
        Range("B3").Offset(i, 0).Value = MyItem.ReceivedTime
        Range("C3").Offset(i, 0).Value = MyItem.SenderName
        Range("D3").Offset(i, 0).Value = MyItem.Body

        i = i + 1

     End If
Next MyItem

Код работал правильно, но теперь я начал получать следующую ошибку: Объект не поддерживает это свойство или метод. В этой строке:

If MyItem.ReceivedTime >= Range("B1").Value Then

При отладке выглядит, что объект MyItem пуст в этот момент, но l oop не должен работать, если это правда.

1 Ответ

0 голосов
/ 23 марта 2020

Похоже, что есть элемент, отличный от MailItem? Что-то вроде ReportItem (Class: olReport; 46), у которого нет свойства ReceivedTime. Вы можете либо физически проверить это, либо использовать .Class для решения этой проблемы. Подробнее о классе можно прочитать в Перечисление OlObjectClass (Outlook)

Попробуйте

For Each MyItem In Folder.Items
    If MyItem.Class = 43 Then '<~~ olMail
        If MyItem.ReceivedTime < Range("B1").Value Then
            '
            '~~> Rest of your code
            '
        End If
    End If
Next MyItem
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...