【问题标题】:How do I extract from a password protected zip file using VBA?如何使用 VBA 从受密码保护的 zip 文件中提取?
【发布时间】:2014-04-11 10:22:44
【问题描述】:

我已经为这个问题苦苦挣扎了很长一段时间,并在各种论坛中寻找答案。

我有一个邮箱,每天早上收到 5 封电子邮件,其中包含压缩、受密码保护的 .csv 文件,需要在 Excel 中打开和处理。我在 VBA 方面是半熟练的,所以 Excel 方面没有问题,但如果我可以自动解压缩这些文件并将它们保存到文件夹中,它将为我节省大量时间。

这些电子邮件每天都有相同的主题、附件和密码,并且来自同一个发件人到同一个邮箱。我有可以自动处理 .zip 文件并将其保存到某个位置的代码,但我仍然遇到必须进入每个文件、输入密码、打开文件、保存文件等问题。

我没有附上此代码,因为我想看看是否有更好的解决方案来解决我的问题,而我真正需要帮助的是解压缩和输入密码。话虽如此,如果您希望我附上我的代码,我将很乐意这样做:)

【问题讨论】:

  • 所以这真的是如何从受密码保护的 zip 文件中提取? 如果是这样,请查看 Info-Zip 库; vbaccelerator.com/home/VB/Code/Libraries/Compression/…
  • 抱歉,我会修改标题。虽然我非常热衷于使用 VBA 的任何解决方案,最有可能在 Outlook 本身中。 VB 解决方案似乎暗示它仍会提示输入密码,但如果这是唯一的选择,我将探索 VB 作为替代方案。

标签: vba outlook password-protection unzip


【解决方案1】:

为了扩展我的评论,不需要输入 - 密码是通过事件获得的,因此可以在代码中提供。

下载演示项目和DLL

在 Outlook VBA 编辑器中,右键单击树中的项目,导入文件并添加

cUnzip.cls
mUnzip.bas

将 DLL 放入 \System32(或 64 位上的 \SysWoW64)

作为一个简单的例子,添加一个新类cWhatever

Private WithEvents Unzip As cUnzip

Private Sub Class_Initialize()
    Set Unzip = New cUnzip
End Sub

Sub RunUnzip()
    With Unzip
        .ZipFile = "c:\blah\qqq.zip"
        .UnzipFolder = "c:\temp"
        .Unzip
    End With
End Sub

Private Sub Unzip_PasswordRequest(sPassword As String, bCancel As Boolean)
    sPassword = "password123"
End Sub

然后从其他地方运行:

Dim x As New cWhatever
x.RunUnzip

第一次运行出现错误高亮App.EXEName,删除App.EXEName &即可

【讨论】:

  • 感谢上面的 Alex,这让事情变得更清楚了。不幸的是,下载可执行文件在工作中受到限制,所以我必须等到回家才能测试它。不过你真的很有帮助,所以再次感谢:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-17
  • 1970-01-01
  • 2012-05-22
  • 1970-01-01
  • 2011-01-01
相关资源
最近更新 更多