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

时间:2018-11-14 15:35:45

标签: access-vba

这需要在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 shell调用WinZip,并将加密的密码作为参数提供给WinZip,以便它可以解压缩文件。

他当前的代码在Windows 7下使用Winzip。我在Windows 10上,当我在计算机上安装Winzip时,它冻结了文件资源管理器,并且无法查看我的子目录或目录。当我卸载WInzip时,一切又恢复了。

如果我具有加密的密码,什么代码将允许我仅使用Access VBA解压缩文件?

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

1 个答案:

答案 0 :(得分:1)

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

Zip and unzip files and folders with VBA the Windows Explorer way

但是这些都与加密的zip文件无关,因为您不能自然地做到这一点。

但是,您可以通过使用WinZip Command Line并将其传递给适当的命令行来使用FileInfo