vba 复制和替换 zip 文件夹中的文件
vba copying and replacing files in zip folder
我创建了一个 VBA 宏,可以根据一些参数从 folder/subfolders 中提取文件。这包括查找满足这些参数的 zip 文件夹并将它们复制到新目录,以便也可以搜索每个文件。我遇到的问题是这些 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 文件夹中的每个文件以说明它是否已经存在,请忽略它。如有任何建议,我们将不胜感激!
也许这有助于:
(摘自:)
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
我创建了一个 VBA 宏,可以根据一些参数从 folder/subfolders 中提取文件。这包括查找满足这些参数的 zip 文件夹并将它们复制到新目录,以便也可以搜索每个文件。我遇到的问题是这些 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 文件夹中的每个文件以说明它是否已经存在,请忽略它。如有任何建议,我们将不胜感激!
也许这有助于: (摘自:)
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