如何正确保存此类附件(来自已签名的邮件)?我用.SaveAsFile方法保存了它,但它没有任何扩展名,也没有应用程序可以打开它。
Set OutItem = Application.ActiveExplorer.Selection.Item(1)
For Each att In OutItem.Attachments
att.SaveAsFile "C:\Temp\" & att.DisplayName
Next
答案 0 :(得分:1)
Attachment类的DisplayName属性返回一个表示名称的字符串,该字符串不需要是实际文件名,显示在代表嵌入式附件的图标下方。
尝试使用FileName属性,该属性返回表示附件文件名的String。
您也可以明确指定代码上的文件扩展名,例如:
For Each att In OutItem.Attachments
att.SaveAsFile "C:\Temp\" & att.DisplayName & ".docx"
Next
答案 1 :(得分:0)
对于olOlE附件,您需要将附件作为IStorage COM对象打开,并从存储中的一个流中提取数据(可能会被损坏) - 您可以在OutlookSpy中看到数据:选择消息,单击OutlookSpy功能区上的IMessage按钮,转到GetAttachmentTable选项卡,双击其中一个附件。选择PR)_ATTACH_DATA_OBJ属性,右键单击,IMAPIProp :: OpenProperty,选择IID_IStorage。使用Outlook对象模型
无法在VBA中访问数据如果使用Redemption是一个选项,其RDOAttachment。SaveAsFile方法足够智能,可以从存储中提取BMP,EMF,PDF,Excel等文件数据。像下面这样的东西(在我的头顶)应该做的工作:
set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
set rMsg = Session.GetRDOObjectFromOutlookObject(Application.ActiveExplorer.Selection.Item(1))
For Each att In rMsg.Attachments
att.SaveAsFile "C:\Temp\" & att.FileName
Next