2015-12-02 162 views
1

我已經創建了一個VBA宏,它根據許多參數從文件夾/子文件夾中提取文件。這包括查找符合這些參數的zip文件夾並將它們複製到新目錄,以便每個文件都可以通過搜索。我遇到的問題是,這些zip文件中的許多文件都是重複的,並且由於項目要自動化,所以我不能坐在那裏並在每次彈出時推送不復制按鈕。有沒有辦法搜索zip文件並忽略重複的文件?我有我的這部分代碼是:vba複製和替換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文件夾中的文件複製到一個名爲「解壓縮的」新文件夾。但是,我不確定如何獲取zip文件夾中的每個單獨文件來說明它是否已經存在,請忽略它。任何建議將不勝感激!

回答

1

也許這會有所幫助:

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 
: ( https://stackoverflow.com/a/14987890/3883521取自)