首页 文章

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

提问于
浏览
0

我有这个代码,它保存了一个特定地方的附件,并将其重命名为“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'的格式与文件扩展名不同 . 确认它没有损坏...”

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

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

1 回答

  • 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文件是一个很大的风险 .

相关问题