我正在使用 Ron 的代码(http://www.rondebruin.nl/win/s7/win002.htm)理论上可以将一堆 zip 文件解压到一个文件夹中。我相信下面的代码获取“下载”目录中的每个 zip 文件,使用 zip 文件的名称创建一个新文件夹(不带“.zip”),然后将文件提取到新文件夹中。我没有收到任何错误(很多时候人们收到运行时错误 91),但唯一发生的事情是它创建了一堆正确命名的文件夹,但它们都是空的。
Sub UnZipMe()
Dim str_FILENAME As String, str_DIRECTORY As String, str_DESTINATION As String
'Your directory where zip file is kept
str_DIRECTORY = "C:\Users\Jennifer\Downloads\"
'Loop through all zip files in a given directory
str_FILENAME = Dir(str_DIRECTORY & "*.zip")
Do While Len(str_FILENAME) > 0
Call Unzip1(str_DIRECTORY & str_FILENAME)
Debug.Print str_FILENAME
str_FILENAME = Dir
Loop
End Sub
Sub Unzip1(str_FILENAME As String)
Dim oApp As Object
Dim Fname As Variant
Dim FnameTrunc As Variant
Dim FnameLength As Long
Fname = str_FILENAME
FnameLength = Len(Fname)
FnameTrunc = Left(Fname, FnameLength - 4) & "\"
If Fname = False Then
'Do nothing
Else
'Make the new folder in root folder
MkDir FnameTrunc
'Extract the files into the newly created folder
Set oApp = CreateObject("Shell.Application")
oApp.Namespace(FnameTrunc).CopyHere oApp.Namespace(Fname).items
End If
End Sub
问题是您没有给 Windows 足够的时间来提取 zip 文件。添加DoEvents
如下所示的行之后。
久经考验
oApp.Namespace(FnameTrunc).CopyHere oApp.Namespace(Fname).items
DoEvents
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)