如何覆盖从磁盘上的zip提取的文件



以下从.zip提取.xls,然后用新名称将其保存到指定的目录中。

Public Sub saveAttachmentZip(itm As Outlook.MailItem)
    
    Const saveFolder = "C:Temp"
    Const fileFolder = "C:Report"
    
    Dim objAtt As Outlook.Attachment
    Dim oApp As Object
    Dim dName As Variant
        
    For Each objAtt In itm.Attachments
        dName = objAtt.DisplayName
        objAtt.SaveAsFile saveFolder & dName
        Set oApp = CreateObject("Shell.Application")
        oApp.NameSpace("C:Report").CopyHere _
               oApp.NameSpace(saveFolder & dName).Items
               Name fileFolder & "Report.xls" As fileFolder & "NewReport.xls"
               Kill saveFolder & dName
    Next
    
End Sub

这一次起作用,然后由于已经存在的文件而失败。有没有办法覆盖现有文件?

奖金信息

我也有以下操作,但对于没有拉链扩展的电子邮件,并且在磁盘上覆盖文件。

Public Sub saveAttach(itm As Outlook.MailItem)
    
    Const fileFolder = "C:Report"
    
    Dim objAtt As Outlook.Attachment
        
    For Each objAtt In itm.Attachments
        objAtt.SaveAsFile fileFolder & "" & "OldReport.csv"
        Set objAtt = Nothing
    Next
    
End Sub

根据我的测试,将CopyHere更改为

oApp.NameSpace("C:Report").CopyHere _
       oApp.NameSpace(saveFolder & dName).Items, _
       4 + 16

应该这样做。

根据文档,flag 4抑制了进度对话框,并将 16迫使"是对所有"响应。

在较旧版本的Windows(我记得)中,"是所有"是"覆盖"响应,这似乎对我来说是正确的。

在Windows 8.1 Pro上的Word 2013 VBA中进行了测试。我用静态文件名检查了一下,而不是.Items集合。

相关内容

  • 没有找到相关文章

最新更新