EXCEL VBA-将工作簿导出到受密码保护的ZIP文件

Parseltongue

无论如何,是否可以修改Ron De Bruin的代码以将当前工作簿导出到受密码保护的zip文件中。我已经环顾了很长时间,无法弄清楚如何启用该选项。

代码在这里:http : //www.rondebruin.nl/win/s7/win001.htm

Sub NewZip(sPath)
'Create empty Zip File
'Changed by keepITcool Dec-12-2005
    If Len(Dir(sPath)) > 0 Then Kill sPath
    Open sPath For Output As #1
    Print #1, Chr$(80) & Chr$(75) & Chr$(5) & Chr$(6) & String(18, 0)
    Close #1
End Sub

Sub Zip_ActiveWorkbook()


 Dim strDate As String, DefPath As String
    Dim FileNameZip, FileNameXls
    Dim oApp As Object
    Dim FileExtStr As String

    DefPath = "C:\Users\Ron\test\"    '<< Change
    If Right(DefPath, 1) <> "\" Then
        DefPath = DefPath & "\"
    End If

    'Create date/time string and the temporary xl* and Zip file name
    If Val(Application.Version) < 12 Then
        FileExtStr = ".xls"
    Else
        Select Case ActiveWorkbook.FileFormat
        Case 51: FileExtStr = ".xlsx"
        Case 52: FileExtStr = ".xlsm"
        Case 56: FileExtStr = ".xls"
        Case 50: FileExtStr = ".xlsb"
        Case Else: FileExtStr = "notknown"
        End Select
        If FileExtStr = "notknown" Then
            MsgBox "Sorry unknown file format"
            Exit Sub
        End If
    End If

    strDate = Format(Now, " yyyy-mm-dd h-mm-ss")

    FileNameZip = DefPath & Left(ActiveWorkbook.Name, _
    Len(ActiveWorkbook.Name) - Len(FileExtStr)) & strDate & ".zip"

    FileNameXls = DefPath & Left(ActiveWorkbook.Name, _
    Len(ActiveWorkbook.Name) - Len(FileExtStr)) & strDate & FileExtStr

    If Dir(FileNameZip) = "" And Dir(FileNameXls) = "" Then

        'Make copy of the activeworkbook
        ActiveWorkbook.SaveCopyAs FileNameXls

        'Create empty Zip File
        NewZip (FileNameZip)

        'Copy the file in the compressed folder
        Set oApp = CreateObject("Shell.Application")
        oApp.Namespace(FileNameZip).CopyHere FileNameXls

        'Keep script waiting until Compressing is done
        On Error Resume Next
        Do Until oApp.Namespace(FileNameZip).items.Count = 1
            Application.Wait (Now + TimeValue("0:00:01"))
        Loop
        On Error GoTo 0
        'Delete the temporary xls file
        Kill FileNameXls

        MsgBox "Your Backup is saved here: " & FileNameZip

    Else
        MsgBox "FileNameZip or/and FileNameXls exist"

    End If
End Sub
奥利弗·洛克特(Oliver Lockett)

我在另一个使用7Zip的网站上找到了可接受的答案...

strDestFileName = "c:\temp\TestZipFile.zip"   
strSourceFileName = "c:\temp\test.pdf"   
str7ZipPath = "C:\Program Files\7-Zip\7z.exe"   
strPassword = "MyPassword"   

strCommand = str7ZipPath & " -p" & strPassword & " a -tzip """ & strDestFileName & """ """ & strSourceFileName & """"
Shell strCommand 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

EXCEL VBA-将工作簿导出到受密码保护的ZIP文件

来自分类Dev

VBA Excel拼写检查受保护的工作簿

来自分类Dev

使用VBA将Excel工作簿导出为PDF

来自分类Dev

忽略受密码保护的Excel文件

来自分类Dev

忽略受密码保护的Excel文件

来自分类Dev

VBA-Excel根据单元格值将数据导出到另一个工作簿

来自分类Dev

VBA 将 Access DB 导出到 Excel

来自分类Dev

使用Java读取受密码保护的Excel文件(.xlsx)

来自分类Dev

如何使用PHPExcel读取受密码保护的Excel文件?

来自分类Dev

如何使用python打开受密码保护的Excel文件?

来自分类Dev

从受密码保护的Excel文件到Python对象

来自分类Dev

Excel无法打开受密码保护的.ods文件

来自分类Dev

VBA 宏 - 将表格数据从 Excel 文件导出到 Word 并为每个工作表创建一个部分

来自分类Dev

VBA Excel保护表

来自分类Dev

导出图片Excel VBA

来自分类Dev

VBA 多密码 excel

来自分类Dev

可以将Excel导出到csv UTF8的工作VBA

来自分类Dev

使用VBA将参数化查询导出到Excel

来自分类Dev

将数据导出到CSV-Excel VBA

来自分类Dev

使用VBA将参数化查询导出到Excel

来自分类Dev

使用VBA将Excel表导出到SQL

来自分类Dev

Excel VBA将特定的列导出到CSV

来自分类Dev

MS Access,VBA-将交叉表导出到Excel

来自分类Dev

VBA Excel 将行导出到 .txt 中的列

来自分类Dev

使用Excel VBA将每日收到的电子邮件提示从Outlook导出到文件

来自分类Dev

关闭工作簿时的VBA Excel操作

来自分类Dev

Excel VBA:获取与范围关联的工作簿

来自分类Dev

Excel VBA可跨工作簿使用

来自分类Dev

VBA Excel工作簿对象变量