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

2023-11-27

无论如何,是否可以修改 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

我在另一个使用 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 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • 如何消除错误“'.'”为 MEAN 堆栈运行“npm install”时,不被识别为内部或外部命令?

    从mean io 下载mean stck zip 是否安装了 npm 几分钟后我收到一个错误 请看截图 我该怎么办 npm http 200 https registry npmjs org event emitter event e mi
  • 如何替换图像的颜色?

    我想替换图像的颜色 例如 将所有蓝色变为红色 形状不会变形 当我尝试这个时 我可以通过迭代每个像素来交换颜色 但是交换区域的形状变成平面形状 示例1输入 http www tutorialwiz com tutorials changing
  • Android 从右到左菜单项

    我有一个幻灯片菜单 如图一所示 我需要将其项目标题从右到左对齐 就像幻灯片二一样 我尝试了重力 右但没有用 这是我的代码 menu menu
  • 如何使用 Android 获得最准确的时间?

    我真的不认为这个问题是重复的 类似问题的大多数答案都说使用 System currentTimeMillis 作为最准确的时间 但我注意到并排的两个 Android 设备可能会彼此相差 5 秒或更长时间 或者 更重要的是 实时 我相信 cu
  • “VM初始化期间发生错误;使用 -Xmx3G 无法为对象堆保留足够的空间”

    首先 我有一个 8GB 内存的盒子 所以我怀疑总内存是问题所在 该应用程序在 6GB 或更少内存的机器上运行良好 我试图在 Eclipse 中的运行配置中的 VM Arguments 下使用 Xmx3G 保留 3GB 空间 每次我尝试保留超
  • 如何减小应用程序 (.apk) 的大小

    Help 当我在手机上安装应用程序进行测试时 它显示出巨大的大小 11 35 MB 这是一个非常简单的应用程序 可让用户浏览有趣的事实 我能想到的唯一原因是 drawable 中有 14 个 JPEG 文件 它们用作有趣事实的背景图像 这些
  • 使用不同的值更新多行

    我在我的 MySQL 数据库 users 中得到了这张表 它具有字段 id 和 value 现在我想更新lots of该表中的行带有singleSQL 查询 但许多行应该得到不同的值 目前 我正在使用这个 UPDATE users SET
  • 是否可以在服务器端运行 jQuery?

    我正在研究网页抓取 已经实现了AJAX分页 由于网站是用asp开发的 即扩展名为 aspx的页面 我尝试提交分页表单以从首页以外的其他页面获取数据 但没有取得任何成功 请看这里我用过的代码从所有实现 AJAX 分页的 ASP NET 页面中
  • asp.net MVC 部分视图控制器操作

    我对 Web 应用程序开发非常陌生 我想我应该从最新的技术开始 所以我尝试立即学习 ASP NET 以及 MVC 框架 对于 MVC 专业人士来说 这可能是一个非常简单的问题 我的问题是分部视图是否应该有关联的操作 如果是这样 每当普通页面
  • .NET Xbox 真实帐户 API

    是否有 NET API 可用于从您的 Xbox Live 帐户获取数据 我真正感兴趣的是谁在线 但消息也很酷 某种事件驱动的用户登录通知会很棒 但如果需要的话我会进行轮询 查看Xbox 社区开发者计划
  • 从编码图像和视频中提取 DCT 系数

    有没有一种方法可以轻松地从编码图像和视频中提取 DCT 系数 和量化参数 任何解码器软件都必须使用它们来解码块 DCT 编码的图像和视频 所以我很确定解码器知道它们是什么 有没有办法将它们暴露给使用解码器的人 我正在实现一些直接在 DCT
  • 如何使用 NUnit 3 在 Atlassian Bamboo 中运行 NUnit Runner?

    我在 Atlassian Bamboo 最新版本 中使用 NUnit Runner 和 NUnit 2 但升级到 NUnit 3 后它不再工作 NUnit 3 中的命令行似乎发生了一些变化 有人知道如何使 NUnit 3 在 Atlassi
  • 如何在 iOS、Swift 中自动填充从 firebase 收到的 OTP 代码上的 OTP 文本字段? (无需攻丝)

    我想知道一个自动调用并填充 OTP 文本字段的回调函数 在我从 firebase 收到 OTP 代码后 我已经尝试过 文本字段 contentType onetimecode 但这不是我要找的 这只是将从短信中获取的 otp 代码作为自动完
  • 如何将 TabBar 添加到基于 NavigationController 的 iPhone 应用程序

    我有一个简单的基于 NavigationController 的应用程序 主窗口显示一个 TableView 选择一个项目会加载一个子视图 我使用 Interface Builder 来显示 UI 视图 现在我想向应用程序添加一个 TabB
  • MSAccess - 最小化工具栏功能区 OnLoad()?

    我正在寻找一种可靠的方法来在 OnLoad 事件期间最小化默认的 MSAccess 工具栏功能区 我意识到可以完全隐藏工具栏 但这并不完全是我想要做的 我只是想最小化功能区 DoCmd ShowToolbar Ribbon acToolba
  • 如何将手势识别器从一个视图传递到另一个视图

    我有一个视图 其中包含多个子视图 这些子视图是带有多个按钮的复杂控件 超级视图具有用于点击 滑动等的手势识别器 在某些情况下 当接收到单次或双次触摸时 我希望超级视图将手势识别器传递给子视图进行处理 例如 singletaprecogniz
  • Fortran:动态数组与自动数组避免内存分配

    分析我们的 Fortran 代码之一 有两个子例程占用了大部分计算时间 22 1 和 17 2 在每个例程中 大约 5 的时间花费在分配和释放内存上 这些例程看起来像 MODULE foo CONTAINS SUBROUTINE bar I
  • 颤动动画设计

    如何在 Flutter 中实现类似的动画 尝试了不同的动画与动画位置 看来是失败了 https giphy com gifs XJ1awq5Wr83uJFkLup 你可以试试this使用示例定制交换动画补间序列 final Animatio
  • 应用 AWS IAM 策略后我应该等待多长时间才能生效?

    我以编程方式添加和删除 AWS IAM 用户策略 但应用这些策略时得到的结果不一致 例如 这可能会成功 也可能不会成功 我使用的是 Java 1 6 6 SDK 从可以从特定存储桶读取数据的用户开始 清除用户策略 列出策略 然后为每一项调用
  • EXCEL VBA - 将工作簿导出到受密码保护的 ZIP 文件

    无论如何 是否可以修改 Ron De Bruin 的代码以将当前工作簿导出到密码保护zip 文件 我已经环顾了一段时间 但不知道如何启用这样的选项 代码在这里 http www rondebruin nl win s7 win001 htm