2015-05-18 3 views
0

Я использую код для извлечения данных электронной почты Outlook в Excel с помощью VBA.Ошибка времени выполнения: 438 с использованием макроса

Во время работы макроса он выдает ошибку:

Run time error:438 -- Object does not support this property or method

и ниже линии, где он выдает ошибку при нажатии на отладку.

wks.Cells(oRow, 1) = Folder.Items.Item(iRow).SenderName 
+1

Является ли элемент, на который ссылается 'iRow'' MailItem'? Входящие могут иметь больше типов элементов, чем просто электронная почта. –

+0

Привет Маскаро, дим IRow As Integer, oRow As Integer Для IRow = 1 Folder.Items.Count oRow = IRow + 1 wks.Cells (oRow, 1) .Select wks.Cells (oRow, 1) = Folder.Items.Item (iRow) .SenderName wks.Cells (oRow, 2) = Folder.Items.Item (iRow) .Subject wks.Cells (oRow, 3) = Folder.Items.Item (iRow) .ReceivedTime wks.Cells (oRow, 4) = Folder.Items.Item (iRow). Размер wks.Cells (oRow, 5) = Folder.Items.Item (iRow) .SenderEmailAddress wks.Cells (oRow, 6) = Folder.Items.Item (iRow) .Body Далее iRow MsgBox «Перспективы электронной почты, извлеченные в Excel» – Kamalakar

+0

Привет, Mascaro, чтобы дать лучшую ясность в моем запросе, код, используемый в этом макросе. – Kamalakar

ответ

1

Во-первых, не используйте многоточечную нотацию, особенно в петле. Сбросьте коллекцию Items перед входом в цикл. Во-вторых, есть вероятность, что у вас есть элемент, отличный от MailItem, например. Объект ReportItem или MeetingItem - сначала проверьте свойство Class. Это будет olMail (= 46) для объектов MailItem:

set items = Folder.Items 
... 
for iRow = 1 to item.Count 
    set item = items.Item(iRow) 
    if item.Class = 46 Then 'olMail 
    wks.Cells(oRow, 1) = item.SenderName 
    End If 
neext 
Смежные вопросы