【发布时间】:2019-04-17 15:04:32
【问题描述】:
这需要同时适用于 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 外壳调用 WinZip,并将加密的密码作为参数提供给 WinZip,以便它可以解压缩文件。
他当前的代码在 Windows 7 下使用 Winzip。我在 Windows 10 上,当我在我的机器上安装 Winzip 时,它冻结了文件资源管理器,我无法查看我的子目录或目录。当我卸载 WINzip 后,一切都恢复正常了。
如果我有加密密码,什么代码可以让我仅使用 Access VBA 解压缩文件?
加密密码是由他的 Sage MRP 程序生成的。
【问题讨论】: