运行 来自 vba 时命令行不工作

command line not working when run from vba

我正在尝试通过我的 VBA 代码解压缩文件。我正在使用 7z 命令行解压缩文件。但是,当来自正常命令提示符的 运行 时,该命令有效,但当通过 VBA 代码 运行 时,同一命令不起作用。

Command:
"C:\Program Files-Zipz.exe" x "C:\Users\Public\AppData\Local\Temp\Sample.zip"

为了进一步了解,我正在尝试提取一个 docx 文件,这就是我将其重命名为 .zip 然后提取的原因。

Sub tst()
Dim MyFile As String, Outdir As String, Cmdstr As String
MyFile = Chr(34) & "c:\TMP\ratings.gz" & Chr(34)
Outdir = Chr(34) & "c:\tmp[=13=]" & Chr(34)
Cmdstr = "c:\Program Files-Zipz.exe" & " e " & MyFile & " -o" & Outdir
Debug.Print Cmdstr
Call Shell(Cmdstr, 1)
End Sub

我用过这种功能(类似)来解压文件。

缺少正确的引号,应该是

Cmdstr = """c:\Program Files-Zipz.exe""" & " e " & MyFile & " -o" & Outdir

7-Zip命令行版本7za.exe而不是7z.exe

我不确定 运行 使用 Shell 方法的 CLI 应用程序,但下一个可以工作:

Cmdstr = "cmd /D /C " & """full path to 7zaza.exe""" & " e " & MyFile & " -o" & Outdir

编辑。要保留文件夹结构,请使用 7zx 命令而不是 e 命令。 e 命令将所有提取的文件复制到一个目录,而 z 命令从存档中提取文件,其完整路径在当前目录中,或者在指定的输出目录中。所以你可以定义 Cmdstr 如下:

Cmdstr = """c:\Program Files-Zipz.exe""" & " x " & MyFile & " -o" & Outdir