如何使用VBA从受密码保护的zip文件中提取?

时间:2014-04-11 10:22:45

标签: vba outlook password-protection unzip

我一直在努力解决这个问题已经有一段时间了,并且已经在各种论坛上搜寻,试图找到答案。

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

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

我没有附加此代码,因为我想看看是否有更好的解决方案,而且解压缩和密码输入我真的需要帮助。如果您希望我附上我的代码,我会很高兴这样做:)

1 个答案:

答案 0 :(得分:0)

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

下载演示项目和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 &