我有以下 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
shellStr = "winzip32 -e C:\Downloads\" & file & " C:\Downloads\"
Call Shell(shellStr, vbHide)
End If
file = Dir
Wend
End Sub
当我执行这个子例程时,我收到运行时错误 53,“找不到文件”错误。当我复制 shellStr... 示例: winzip32 -e C:\Downloads\file1.gz C:\Downloads\
并从命令提示符执行它时,它工作得很好!我将 file1.gz 中的文本文件提取到下载目录。然而,从 VBA 运行它似乎不起作用。
有人可以透露一些信息吗?
最佳答案
您应该尝试使用 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:\Program Files (x86)\WinZip\winzip32。你应该用你的。 您的安装路径可能是:
C:\Program Files\WinZip\winzip32
关于shell - 使用 VBA Shell 命令提取文件夹中的所有 .gz 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20222353/