从vba运行时命令行不起作用

时间:2015-02-02 04:30:43

标签: vba command-prompt unzip

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

Command:
"C:\Program Files\7-Zip\7z.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\0" & Chr(34)
Cmdstr = "c:\Program Files\7-Zip\7z.exe" & " e " & MyFile & " -o" & Outdir
Debug.Print Cmdstr
Call Shell(Cmdstr, 1)
End Sub

我已经使用这种类型的功能(类似)来解压缩文件。

1 个答案:

答案 0 :(得分:0)

缺少正确的引用,应该是

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

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

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

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

修改即可。要保留文件夹结构,请使用 7z x命令而不是e命令。虽然e命令将所有提取的文件复制到一个目录,但z命令从存档中提取文件,其中包含当前目录中的完整路径,或者在指定的输出目录中。因此,您可以按如下方式定义Cmdstr

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