我正在尝试通过我的VBA代码解压缩文件。我正在使用 7z 命令行解压缩文件。但是,该命令在从普通命令提示符运行时有效,但在通过VBA代码运行时,相同的命令不起作用。
Command:
"C:Program Files7-Zip7z.exe" x "C:UsersPublicAppDataLocalTempSample.zip"
为了进一步理解,我正在尝试提取一个docx文件,这就是为什么我将其重命名为.zip然后提取的原因。
Sub tst()
Dim MyFile As String, Outdir As String, Cmdstr As String
MyFile = Chr(34) & "c:TMPratings.gz" & Chr(34)
Outdir = Chr(34) & "c:tmp " & Chr(34)
Cmdstr = "c:Program Files7-Zip7z.exe" & " e " & MyFile & " -o" & Outdir
Debug.Print Cmdstr
Call Shell(Cmdstr, 1)
End Sub
我使用这种类型的函数(类似)来解压缩文件。
缺少正确的引用,应该是
Cmdstr = """c:Program Files7-Zip7z.exe""" & " e " & MyFile & " -o" & Outdir
7-Zip 的命令行版本是 7za.exe
而不是 7z.exe
。
我不确定是否使用Shell
方法运行 CLI 应用程序,但接下来可以工作:
Cmdstr = "cmd /D /C " & """full path to 7za7za.exe""" & " e " & MyFile & " -o" & Outdir
编辑。要保留文件夹结构,请将 7z 与x
命令一起使用,而不是e
命令。当 e
命令将所有提取的文件复制到一个目录时,z
命令从存档中提取文件,这些文件的完整路径位于当前目录或输出目录中(如果指定)。因此,您可以按如下方式定义Cmdstr
:
Cmdstr = """c:Program Files7-Zip7z.exe""" & " x " & MyFile & " -o" & Outdir