vba - 如何在VBA中解压缩同名文件?
问题描述
我在尝试用 VBA 解压缩的目录中有一堆 zip 文件夹。我正在使用以下代码:
Sub UnzipAll()
Dim oShell As Object: Set oShell = CreateObject("Shell.Application")
Dim folder As Variant: folder = Dir(ThisWorkbook.Path & "\Attachments\")
While (folder <> "")
If InStr(folder, ".zip") > 0 Then
oShell.Namespace(ThisWorkbook.Path & "\Attachments\").CopyHere oShell.Namespace(ThisWorkbook.Path & "\Attachments\" & folder).Items
End If
folder = Dir
Wend
End Sub
这工作得很好,但遇到了一个问题:当两个 zip 文件夹包含同名文件时,会弹出一个提示,询问我是要替换还是保留两者。
我怎样才能使它提取两个文件,同时保留两个文件?也许在一个之后加上一个数字来区分?
谢谢!
解决方案
免责声明:这完全是在黑暗中拍摄,但这可能会奏效。我只是不熟悉这个.Namespace
或.CopyHere
语法,但我认为这会起作用(在该位置已经存在的文件的末尾附加一个数字)。
Sub UnzipAll()
Dim oShell As Object: Set oShell = CreateObject("Shell.Application")
Dim folder As Variant: folder = Dir(ThisWorkbook.Path & "\Attachments\")
Dim i As Long
i = 1
While (folder <> "")
If InStr(folder, ".zip") > 0 Then
If Dir(ThisWorkbook.Path & "\Attachments\" & oShell.Namespace(ThisWorkbook.Path & "\Attachments\" & folder).Items) = "" Then
oShell.Namespace(ThisWorkbook.Path & "\Attachments\").CopyHere oShell.Namespace(ThisWorkbook.Path & "\Attachments\" & folder).Items
Else
oShell.Namespace(ThisWorkbook.Path & "\Attachments\").CopyHere oShell.Namespace(ThisWorkbook.Path & "\Attachments\" & folder).Items & i
i = i + 1
End If
End If
folder = Dir
Wend
End Sub
推荐阅读
- java - parse using Apache HttpClient + JSOUP getting empty value JAVA
- python - 我怎么知道在我点击的地方获得一颗星?
- python - OpenCV ValueError when running with tensorflow
- mysql - 慢查询:根据每个组的另一列的最小值和最大值查找值之间的差异
- android - 如何从自定义 listAdapter 重置搜索并显示所有数据?
- c# - 使用 XDocument 在特定点添加元素?
- github-actions - 使用 pyspelling 过滤标题字段
- r - 我怎样才能知道我的代码中的哪一行产生了特定的输出?
- python - Tensorflow 2 Keras嵌套模型子类化-总参数为零
- sql - 如何从表1和表2的数据创建表3