如何使用Access VBA和加密密码解压缩受密码保护的zip文件



这需要同时适用于Windows 7和Windows 10。我正在将一个客户端非常手动的基于Excel VBA的过程转换为通过ODBC将MS Access链接到他的MRP程序的Pervasive数据库后端的东西。

我发现了另一个线程,他们正在使用Access VBA解压缩文件,但我无法发布到该网站,即使我有登录帐户,所以我在这里发布:

https://answers.microsoft.com/en-us/office/forum/office_2007-access/how-do-i-extract-zip-files-through-ms-access/e3720f53-2413-409b-ad0b-bbfb67e823e4

该链接中使用的代码如下。我还没有运行它。我只是想知道如何合并加密的密码值以获得所需的结果:

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以便解压缩文件。

他目前的代码使用Windows7下的Winzip。我使用的是Windows 10,当我在机器上安装Winzip时,它冻结了文件资源管理器,我无法查看我的子目录或目录。当我卸载WInzip时,一切又好起来了。

如果我有加密的密码,什么代码可以让我只使用Access VBA解压缩文件?

加密密码是由他的Sage MRP程序生成的。

我在文章中介绍了压缩和解压缩"Windows资源管理器方式":

使用VBA压缩和解压缩文件和文件夹Windows资源管理器方式

但这些与加密的zip文件无关,因为您无法在本机中做到这一点。

但是,您可以使用WinZip命令行,方法是直接执行此操作,并向其传递适当的命令行。

最新更新