我试图通过我的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
我已经使用这种类型的功能(类似)来解压缩文件。
答案 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