使用静态名称保存和重命名Outlook附件

时间:2017-04-26 16:17:26

标签: vba outlook outlook-vba

我有这个代码,可以保存对特定地点的附件并将其重命名为" name.xls"

Public Sub saveAttachtoDisk(itm As Outlook.MailItem)
Dim objAtt As Outlook.Attachment
Dim saveFolder As String
saveFolder = "C:\Users\acheng\Desktop"
     For Each objAtt In itm.Attachments
          objAtt.SaveAsFile saveFolder & "\name.xls"
          Set objAtt = Nothing
     Next
End Sub

用户在此线程中使用.csv文件执行了非常类似的操作:

VBA Outlook - Rename attachments and save to folder

除了使用.xls文件外,我做了同样的事情。

我的脚本会保存并重命名该文件,但当我尝试打开该文件时,它会显示:"' name.xls'格式与文件扩展名指定的格式不同。确认它没有损坏......"

一旦我点击是并且它打开,所有数据都是奇怪的符号。如果我更换& ' \ name.xls'与'& objAtt.DisplayName'它将使用它的原始名称正确保存文件。

我已经仔细检查过这是一个.xls文件。找出更通用的东西(以便相同的脚本适用于.xls .xlsx和.xlsm)也会非常有用,但不是那么重要。

1 个答案:

答案 0 :(得分:1)

如果有多个附件,您的代码可能会将Excel附件替换为其他附件之一。

尝试这样的事情,找出

Public Sub saveAttachtoDisk(itm As Outlook.MailItem)
     Dim objAtt As Outlook.Attachment
     Dim saveFolder As String
     Dim i as Integer

     i=0
     saveFolder = "C:\Users\acheng\Desktop"
     For Each objAtt In itm.Attachments
          i = i + 1
          objAtt.SaveAsFile saveFolder & "\name" & i & ".xls"
          Set objAtt = Nothing
     Next
End Sub

你应该在这里添加一些验证。假设所有附件都是Excel文件是一个很大的风险。