使用VBA Shell命令提取文件夹中的所有.gz文件
我有以下VBA代码来提取给定目录中的所有文件使用VBA Shell命令提取文件夹中的所有.gz文件,shell,vba,excel,extract,Shell,Vba,Excel,Extract,我有以下VBA代码来提取给定目录中的所有文件 Sub extractAllFiles() Dim MyObj As Object, MySource As Object, file As Variant Dim shellStr As String file = Dir("C:\Downloads\") While (file <> "") If InStr(file, ".gz") > 0 Then
Sub extractAllFiles()
Dim MyObj As Object, MySource As Object, file As Variant
Dim shellStr As String
file = Dir("C:\Downloads\")
While (file <> "")
If InStr(file, ".gz") > 0 Then
shellStr = "winzip32 -e C:\Downloads\" & file & " C:\Downloads\"
Call Shell(shellStr, vbHide)
End If
file = Dir
Wend
End Sub
Sub-extractAllFiles()
Dim MyObj作为对象,MySource作为对象,文件作为变量
暗壳串
file=Dir(“C:\Downloads\”)
While(文件“”)
如果InStr(文件“.gz”)>0,则
shellStr=“winzip32-ecc:\Downloads\”和文件&C:\Downloads\”
调用Shell(shellStr、vbHide)
如果结束
file=Dir
温德
端接头
当我执行这个子程序时,我得到一个运行时错误53,“未找到文件”错误。当我复制shellStr时。。。示例:winzip32-ec:\Downloads\file1.gz C:\Downloads\
并在命令提示符下执行,它工作得非常好!我将file1.gz中的文本文件解压缩到下载目录。然而,从VBA运行它似乎不起作用
有人能解释一下吗?使用中的逻辑,尝试以下代码:
Sub ExtractAllFiles()
Dim FileName As String
Dim ShellStr
FileName = Dir("C:\Downloads\*.gz")
Do While Len(FileName) > 0
ShellStr = "winzip32 -e " & FileName & " C:\Downloads"
Call Shell(ShellStr, vbHide)
FileName = Dir
Loop
End Sub
让我们知道这是否有帮助。您应该尝试使用shell命令的完整路径,如下所示,这对我很有用:
Sub extractAllFiles()
Dim MyObj As Object, MySource As Object, file As Variant
Dim shellStr As String
file = Dir("C:\Downloads\")
While (file <> "")
If InStr(1, file, ".gz") > 0 Then
shellStr = "C:\Program Files (x86)\WinZip\winzip32 -e C:\Downloads\" & file & " C:\Downloads\"
Call Shell(shellStr, vbHide)
End If
file = Dir
Wend
End Sub
WinZip路径必须是绝对路径:
C:\ProgramFiles\WinZip\winzip32'检查WinZip路径。这需要很好地修复到WinZip的完整路径。天哪,我简直不敢相信。我错过了winzip的路径。只是试了一下,效果很好。不过有一个问题,如何防止windows资源管理器在目录被提取后弹出显示目录的内容?没关系,我知道了。这是WinZip中“解压缩选项”下的一个设置。这相当于WinZip行为。当我从Access VBA启动winzip以查看目录时,它非常有用。我不知道怎么做。
C:\Program Files\WinZip\winzip32