如何用VBA调用7-Zip将B列文件压缩后按D列名称重命名
VBA批量调用7zip按单元格规则压缩文件修复方案
原代码问题梳理
- 7zip执行路径重复拼接,出现两次
7z.exe导致路径识别失败 - 单元格取值属性拼写错误:VBA中正确写法为
Value,原代码写为Values - 循环范围不匹配需求:需求覆盖1723行,原代码仅循环1722行
- 仅完成命令拼接未执行:未调用
Shell函数触发实际压缩操作 - 带空格的执行路径未加引号包裹,系统无法正常识别程序路径
- 未默认添加压缩包后缀,会生成无后缀的异常文件
修正后可运行代码
Sub Batch7zipCompress() '执行前请先配置引用:Tools -> References -> 勾选 Microsoft Scripting Runtime Dim fso As New FileSystemObject Dim i As Long Dim strCommand As String ' 7zip安装路径,若自定义安装请修改为实际路径 Const sevenZipPath As String = "C:\Program Files\7-Zip\7z.exe" For i = 17 To 23 ' 匹配需求遍历17到23行 ' 拼接压缩命令:a=添加到压缩包 -r=递归处理子目录 strCommand = Chr(34) & sevenZipPath & Chr(34) & " a -r " & _ Chr(34) & Cells(i, "D").Value & ".7z" & Chr(34) & " " & _ Chr(34) & Cells(i, "B").Value & "*.txt" & Chr(34) ' 执行压缩,如需后台静默运行可将vbNormalFocus替换为vbHide Shell strCommand, vbNormalFocus Next End Sub
注意事项
- 若不需要仅压缩目标路径下的txt文件,可删除代码中
& "*.txt"的片段 - 若D列已提前配置
.7z后缀,可删除代码中& ".7z"的片段 - 执行前建议先备份源文件,避免参数配置错误导致文件损坏
内容的提问来源于stack exchange,提问作者Isaac
相关产品推荐
相关产品推荐

