下载附件并用主题行重命名

问题描述 投票:0回答:1

我正在使用 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
vba outlook office365 email-attachments
1个回答
1
投票

首先,您需要为保存到磁盘的文件使用唯一的名称。在以下代码中,主题属性用于所有附件:

For Each objAtt In itm.Attachments
  objAtt.SaveAsFile saveFolder & "" & itm.Subject & ".PDF"
  Set objAtt = Nothing
Next 

因此,您需要在文件名中添加一个唯一的 ID,以便能够将它们全部保存在磁盘上。否则,名称为

Subject
的同一文件将被覆盖。

其次,确保传递给

SaveAsFile
方法的文件名不包含禁用符号。有关详细信息,请参阅保存工作簿 Excel VBA 时删除非法字符。

第三,确保将有效的文件路径传递给

SaveAsFile

 方法。我建议添加 
Debug.Print
 语句,它可以帮助识别文件路径可能存在的问题。只需尝试将结果文件路径字符串打印到控制台,看看它是否构建正确。

© www.soinside.com 2019 - 2024. All rights reserved.