我正在使用 Office 365。
此代码有效。
Public Sub saveAttachtoDisk(itm As Outlook.MailItem)
Dim objAtt As Outlook.Attachment
Dim saveFolder As String
saveFolder = "C:\Users\ppp\Desktop\Image Test"
For Each objAtt In itm.Attachments
objAtt.SaveAsFile saveFolder & "" & objAtt.DisplayName
Set objAtt = Nothing
Next
End Sub
我想修改它以保存带有电子邮件主题的 pdf 附件。
文件保存类型为:文件(不是 PDF),大小为 0 KB。
此外,它还使用附件名称而不是主题保存文件。
Public Sub saveAttachtoDisk(itm As Outlook.MailItem)
Dim objAtt As Outlook.Attachment
Dim saveFolder As String
saveFolder = "C:\Users\ppp\Desktop\Image Test"
MSN = Trim(itm.Subject)
For Each objAtt In itm.Attachments
objAtt.SaveAsFile saveFolder & "" & itm.Subject & ".PDF"
Set objAtt = Nothing
Next
End Sub
首先,您需要为保存到磁盘的文件使用唯一的名称。在以下代码中,主题属性用于所有附件:
For Each objAtt In itm.Attachments
objAtt.SaveAsFile saveFolder & "" & itm.Subject & ".PDF"
Set objAtt = Nothing
Next
因此,您需要在文件名中添加一个唯一的 ID,以便能够将它们全部保存在磁盘上。否则,名称为
Subject
的同一文件将被覆盖。
其次,确保传递给
SaveAsFile
方法的文件名不包含禁用符号。有关详细信息,请参阅保存工作簿 Excel VBA 时删除非法字符。
第三,确保将有效的文件路径传递给 SaveAsFile
方法。我建议添加
Debug.Print
语句,它可以帮助识别文件路径可能存在的问题。只需尝试将结果文件路径字符串打印到控制台,看看它是否构建正确。