vba复制和替换zip文件夹中的文件

时间:2015-12-02 19:40:32

标签: excel vba shell zip

我创建了一个VBA宏,它根据许多参数从文件夹/子文件夹中提取文件。这包括查找满足这些参数的zip文件夹并将它们复制到新目录,以便也可以搜索每个文件。我遇到的问题是这些拉链中的许多文件都是重复的,并且由于项目是自动化的,所以每次弹出时我都不能坐在那里按下不要复制按钮。有没有办法搜索zip文件并忽略重复的文件?我对这部分代码的要求是:

Sub Unzip(fileName As String, mainSubfolder As String)

Dim sourceDir As String, fileString As String
Dim FileNameFolder As Variant
Dim oApp As Object

sourceDir = "\\Filesrv02\depts\AR\EDIfiles\Remits"
fileString = mainSubfolder + fileName

    If Right(sourceDir, 1) <> "\" Then
        sourceDir = sourceDir & "\"
    End If

    FileNameFolder = sourceDir & "Unzipped"

    If Dir(FileNameFolder, vbDirectory) = vbNullString Then
        MkDir FileNameFolder
    End If

    Set oApp = CreateObject("Shell.Application")
        oApp.Namespace(FileNameFolder).CopyHere oApp.Namespace(fileString).Items
End Sub

最后两行是将zip文件夹中的文件复制到名为“Unzipped”的新文件夹的位置。但是,我不确定如何获取zip文件夹中的每个文件,以确定它是否已存在,请忽略它。任何建议将不胜感激!

1 个答案:

答案 0 :(得分:1)

也许这会有所帮助: (摘自:https://stackoverflow.com/a/14987890/3883521

With oApp.NameSpace(ZipFile & "\")
  If OverwriteFile Then
     For Each fil In .Items
        If FSO.FileExists(DefPath & fil.Name) Then
           Kill DefPath & fil.Name
        End If
     Next
  End If
  oApp.NameSpace(CVar(DefPath)).CopyHere .Items
End With