2015-04-09 4 views
1

Я создал код VBA, чтобы сохранить все вложения из всех писем в папке Outlook в физическую папку на моем компьютере. При тестировании я столкнулся с этой ошибкой. Когда у получаемого письма есть «обычный» значок электронной почты, все работает так, как ожидалось. Но когда у него есть этот значок, как вы видите на скриншоте, код VBA дает эту ошибку:Что означает этот значок Outlook?

error message 438: "object doesn't support this property or method".

enter image description here

Я также не могу просматривать вложения как обычная почта. Что я могу сделать, это select one mail > File > Save Attachments

Итак, мои вопросы: что означает значок, связанный кругом, перед значком электронной почты? Что это за имя и есть способ обойти эту неспособность сразу просмотреть/сохранить вложения?

Note: of course I've searched Google but the solutions it provides only apply to the regular email type. Also, the mails with this icon are "bouncers"; auto-reply mails from a server when a mail isn't send to a valid address.

EDIT:

Это строка кода, который генерирует ошибку:

For Each Item In SubFolder.Items 

    For Each aAttachment In Item.Attachments 
     If LCase(Right(aAttachment.FileName, Len(ExtString))) = LCase(ExtString) Then 
      FileName = DestFolder & Item.SenderName & " " & I & aAttachment.FileName 'Item.SenderName is the error generator 
      aBijlage.SaveAsFile FileName 
      I = I + 1 
     End If 
    Next aAttachment 
Next Item 
+0

Похоже Email прочтении. Вы можете использовать простой обработчик ошибок для этого 'On Error Resume Next', поскольку они не будут отдельными электронными письмами самостоятельно. – izzymo

+0

@izzymo У меня есть это, но эти «посылки для чтения электронной почты» содержат вложение .msg с оригинальной почтой, в которой я нуждаюсь – moffeltje

+0

Не будет ли это прикрепление по исходному письму, которое вы отправили. – izzymo

ответ

1

Изменить код

set vItems = SubFolder.Items 
    dim Item As Object 
    'PR_HASATTACH = true 
    set Item = vItems.Find("@SQL=""http://schemas.microsoft.com/mapi/proptag/0x0E1B000B"" = 'true' ") 
    while Not (Item is Nothing) 
     if Item.Class = olMail Then 
     Debug.Print Item.Subject 
     For Each aAttachment In Item.Attachments 
      If LCase(Right(aAttachment.FileName, Len(ExtString))) = LCase(ExtString) Then 
       FileName = DestFolder & Item.SenderName & " " & I & aAttachment.FileName 'Item.SenderName is the error generator 
       aAttachment.SaveAsFile FileName 
       I = I + 1 
      End If 
     Next aAttachment 
     End If 
     set Item = vItems.FindNext 
    wend 
+0

Отладка находит, что Item.Class == olReport (46) – moffeltje

+0

Решил! благодаря вам. ReportItem не имеет члена 'SenderName', поэтому я просто удалил его. – moffeltje

1

Это отчет Non Delivery. См. What do the Outlook icons mean? для получения дополнительной информации.

the macro gives error message 438: "object doesn't support this property or method".

Какая строка кода генерирует ошибку? Какой код вы используете? Не могли бы Вы уточнить?

+0

Как вы видите в моем вопросе, все методы с 'Item' генерируют ошибка. Это не происходит с обычным «прочитанным сообщением» – moffeltje

+0

Как вы объявили объект item в коде? –

+0

'Dim item As Object' – moffeltje