首页 > 解决方案 > MSAccess VBA 外壳:解压缩

问题描述

我正在使用从 WScript.Shell 调用的简单 ZIP/UNZIP 实用程序 ( http://infozip.sourceforge.net/ )。

strPath = CurrentProject.Path & "\Backend_Databases\"
strPathUtil = CurrentProject.Path & "\Backend_Databases\DB_Utilities\"

ChDir strPath
strCMD = strPathUtil & "UNZIP.exe -o Item_4892.zip"
fShellRun (strCMD)

我没有得到任何结果,也没有抱怨这种方法。生成的 strCMD 如下所示:

C:\Users\Mark\Desktop\Backend_Databases\DB_Utilities\UNZIP.exe -o Item_4892.zip

此行完全按预期从命令行窗口工作。fShellRun 对我的 AccessDB 中使用的其他 Shell 命令按预期工作。

注意:我可以发誓这在最初的测试中就像上周一样工作,但我现在似乎无法弄清楚;这让我彻底疯了!也许我离这个太近了,我错过了一些明显的东西。

有任何想法吗?

标签: ms-accessvba

解决方案


以下作品。我原来的 fShellRun 很久以前是为其他目的定制的,与此任务不兼容。

以下是非常简单和实用的,静默运行:

Private Sub UnzipTest_Click()

Dim oShell
Dim strFile As String
Dim strPath As String
Dim strPathUtil As String

Set oShell = CreateObject("WScript.shell")

strFile = Me!txtFilename
strPath = CurrentProject.Path & "\Backend_Databases\"
strPathUtil = CurrentProject.Path & "\Backend_Databases\DB_Utilities\"

strCMD = strPathUtil & "UNZIP.exe -o " & strPath & strFile & " -d " & strPath

oShell.Run strCMD, 0, True

Set oShell = Nothing

End Sub

注意:这指向第 3 方 UNZIP 实用程序,而不是 std Windows ZIP 实用程序。UNZIP.exe 保存在我的“...\DB_Utilities”文件夹中。 http://infozip.sourceforge.net/


推荐阅读