这需要在Windows 7和Windows 10上都可以使用。我正在将基于客户端非常手动的基于Excel VBA的过程转换为通过ODBC将MS Access链接到他的MRP程序的Pervasive数据库后端的东西。
我找到了另一个线程,他们使用Access VBA解压缩文件,但是即使我有登录帐户,也无法发布到该站点,所以我在这里发布:
该链接中使用的代码如下。我还没有运行。只是想知道如何合并加密的密码值以获得所需的结果:
Sub ImportZippedFile(ByVal sZipFileName As Variant)
Dim oApp As Object
Dim fileNameInZip As Variant
Dim sFileNameFolder As Variant
Dim vLocalZipName as Variant
vLocalZipName =sZipFileName
'use system temp folder to extract zipped file to.
sFileNameFolder = Environ("Temp") & "\Excel_Tmp\"
'Extract the file into the newly created folder
Set oApp = CreateObject("Shell.Application")
'list all the file names within the zip file
For Each fileNameInZip In oApp.Namespace(vLocalZipName ).items
msgbox filenameinzip
oApp.Namespace(sFileNameFolder).CopyHere _
oApp.Namespace(vLocalZipName ).items.item(CStr(fileNameInZip))
Next fileNameInZip
Set oApp = Nothing
End Sub
但是,该示例中的zip文件显然没有密码保护。我的客户端的目录充满了受密码保护的zip文件。他使用Excel VBA和具有文件名的数据库表以及解压缩文件所需的加密密码。他的代码从Excel VBA shell调用WinZip,并将加密的密码作为参数提供给WinZip,以便它可以解压缩文件。
他当前的代码在Windows 7下使用Winzip。我在Windows 10上,当我在计算机上安装Winzip时,它冻结了文件资源管理器,并且无法查看我的子目录或目录。当我卸载WInzip时,一切又恢复了。
如果我具有加密的密码,什么代码将允许我仅使用Access VBA解压缩文件?
加密的密码是由他的Sage MRP程序生成的。
答案 0 :(得分:1)
我在文章中介绍了“ Windows资源管理器方式”的压缩和解压缩:
Zip and unzip files and folders with VBA the Windows Explorer way
但是这些都与加密的zip文件无关,因为您不能自然地做到这一点。
但是,您可以通过使用WinZip Command Line并将其传递给适当的命令行来使用FileInfo。