我多年来一直使用VBA片段来压缩文件夹中的所有文件。今天我们在co worker计算机上尝试了这个,代码似乎经历了迭代,但没有任何文件输出。唯一的区别是新机器是32位,旧代码是64位。是否有任何理由32位文件无法与VBA一起使用?
Sub ZipIndividualFiles1()
Dim file As Variant
Const source = "C:\Users\co01\Desktop\TEST"
Const DEST = "C:\Users\co01\Desktop\Zipped"
Const PATH_TO_7Z = "C:\Program Files\7-Zip\7z.exe"
For Each file In CreateObject("Scripting.FileSystemObject").GetFolder(source).Files
Shell PATH_TO_7Z & " a -tzip """ & DEST & "\" & file.Name & ".zip"" """ & file.Path & """"
Next
End Sub
在PATH_TO_7Z
路径上存在7个zip。我们甚至尝试重新安装它。程序运行完成且没有错误。
答案 0 :(得分:2)
嗨,我发现此代码可以完成这项工作,您需要将其放置在需要压缩的文件夹中,然后运行它,并且可以通过VBA将其保存为批处理文件。
我最近学到了这一点,所以我想指出可以进行的更改。
如果您需要脚本将所有文件压缩为单个zip,则需要将“%CurrDirName%.zip”修改为“ %% a.zip”
如果您需要脚本将所有内容压缩为一个,可以将“ %% a.zip”更改为“%CurrDirName%.zip
如果您需要提供简单的名称,则可以在“ Hardcoded.zip”中使用硬编码的名称。
如果只需要压缩某些文件类型,则可以将其添加到设置扩展名中
如果您需要将某些文件类型压缩为-x!*。bat,这里.bat是我要排除的
希望有帮助
@echo off
cd /d %~dp0
rem 7z.exe path
set sevenzip=
if "%sevenzip%"=="" if exist "%ProgramFiles(x86)%\7-zip\7z.exe" set sevenzip=%ProgramFiles(x86)%\7-zip\7z.exe
if "%sevenzip%"=="" if exist "%ProgramFiles%\7-zip\7z.exe" set sevenzip=%ProgramFiles%\7-zip\7z.exe
if "%sevenzip%"=="" echo 7-zip not found&pause&exit
for %%I in (.) do set CurrDirName=%%~nxI
set extension=.*
for %%a in (*%extension%) do "%sevenzip%" a "%CurrDirName%.zip" "%%a" -x!*.bat
pause
[/CODE]