我已经制作了一个VBA代码,用于将Outlook文件夹中所有邮件的所有附件保存到计算机上的物理文件夹中。在测试时我遇到了这个错误,当我收到的电子邮件有一个“正常”的电子邮件图标时,一切都按预期工作。但是当你在截图中看到它有这个图标时,VBA代码就会出现这个错误:
错误消息438:“对象不支持此属性或方法”。
我也无法将附件视为普通邮件。我能做的是select one mail > File > Save Attachments
所以我的问题是:电子邮件前带圆圈的图标是什么意思?它的名称是什么,是否有办法绕过无法立即查看/保存附件?
注意:我当然搜索了Google,但它提供的解决方案仅适用于常规电子邮件类型。此外,带有此图标的邮件是“保镖”;当邮件未发送到有效地址时,自动回复来自服务器的邮件。
修改
这是生成错误的代码行:
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 :(得分:1)
这是一份未送达报告。有关详细信息,请参阅What do the Outlook icons mean?。
宏给出错误消息438:“对象不支持此属性或方法”。
哪行代码会产生错误?你用什么代码?你能更具体一点吗?
答案 1 :(得分: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