ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 3996|回复: 9

[求助] 压缩文件,文件夹多层

[复制链接]

TA的精华主题

TA的得分主题

发表于 2012-5-31 00:37 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
之前超版发的帖子,2个帖子,是将excel转换并压缩。我电脑里是RAR格式,对照着修改了,但是出现文件夹多层问题。求帮忙怎么检查修改呢
测试产出的压缩见附件。
  1. Sub Winrar()

  2.     Application.DisplayAlerts = False

  3.     Dim TheRarexe As String    'WINRAR程序的位置

  4.     Dim TheSource As String    '压缩前的源文件

  5.     Dim TheTarget As String    '压缩好的文件

  6.     Dim TheFileString As String

  7.     Dim TheResult As Long


  8.     If InStr(ActiveWorkbook.Name, "EH(大熊)") > 0 Then


  9.         With ActiveWorkbook

  10.             TheRarexe = "C:\Program Files\WinRAR\WinRAR"    '系统WINRAR路径

  11.             '.SaveCopyAs "C:\Users\Administrator\Documents\Excelhome\EH(大熊)-" & Format(Date, "yyyy.mm.dd") & "-" & .Name   '另存为C盘根目录下,作为压缩用的临时文件

  12.             .SaveCopyAs "C:\Users\Administrator\Documents\Excelhome\EH(大熊)-" & Format(Date, "yyyy.mm.dd") & Mid(.Name, 18, InStrRev(.Name, ".xl") - 1)     '另存为C盘根目录下,作为压缩用的临时文件

  13.             TheSource = "C:\Users\Administrator\Documents\Excelhome\EH(大熊)-" & Format(Date, "yyyy.mm.dd") & Mid(.Name, 18, InStrRev(.Name, ".xl") - 1)  '临时文件作为压缩源文件

  14.             TheTarget = "C:\EH(大熊)-" & Format(Date, "yyyy.mm.dd") & Mid(.Name, 18, InStrRev(.Name, ".xl") - 18) & ".rar"       '保存到目录

  15.             TheFileString = TheRarexe & " a " & TheTarget & " " & TheSource

  16.             TheResult = Shell(TheFileString, vbHide)    '压缩

  17.             Application.Wait Now + TimeValue("00:00:02")

  18.             Kill TheSource    '删除临时文件

  19.             .SaveAs "C:\Users\clarkshao\Desktop\EH(大熊)帖子附件\EH(大熊)-" & Format(Date, "yyyy.mm.dd") & Mid(.Name, 18, 99)     '另存为C盘根目录下,作为压缩用的临时文件

  20.         End With

  21.     Else

  22.         With ActiveWorkbook

  23.             TheRarexe = "C:\Program Files\WinRAR\WinRAR"    '系统WINRAR路径

  24.             .SaveCopyAs "C:\Users\Administrator\Documents\Excelhome\EH(大熊)-" & Format(Date, "yyyy.mm.dd") & "-" & .Name   '另存为C盘根目录下,作为压缩用的临时文件

  25.             TheSource = "C:\Users\Administrator\Documents\Excelhome\EH(大熊)-" & Format(Date, "yyyy.mm.dd") & "-" & .Name  '临时文件作为压缩源文件

  26.             TheTarget = "C:\Users\Administrator\Documents\Excelhome\EH(大熊)-" & Format(Date, "yyyy.mm.dd") & "-" & Mid(.Name, 1, InStrRev(.Name, ".xl") - 1) & ".rar"       '保存到目录

  27.             TheFileString = TheRarexe & " a " & TheTarget & " " & TheSource

  28.             TheResult = Shell(TheFileString, vbHide)    '压缩

  29.             Application.Wait Now + TimeValue("00:00:02")

  30.             Kill TheSource    '删除临时文件

  31.             '.SaveAs "C:\Users\Administrator\Documents\Excelhome\EH(大熊)-" & Format(Date, "yyyy.mm.dd") & "-" & .Name     '另存为C盘根目录下,作为压缩用的临时文件

  32.         End With

  33.     End If

  34.     Application.DisplayAlerts = True

  35. End Sub
复制代码

http://club.excelhome.net/thread-866132-1-1.html
http://club.excelhome.net/thread-865133-1-1.html

EH(大熊)-2012.05.31-测试.rar

6.85 KB, 下载次数: 53

TA的精华主题

TA的得分主题

发表于 2012-5-31 07:49 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
熬到那么晚啊。应该就是最后一句执行参数的问题,现在不知道用哪个参数,我的用min a实现的,winrar一会我再查查,是不是ep那个方式写错了

TA的精华主题

TA的得分主题

发表于 2012-5-31 08:06 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2012-5-31 08:12 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
注意前后的空格要留着,参数间必须有空格

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-5-31 08:42 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
shaowu459 发表于 2012-5-31 08:06
http://www.officefans.net/cdb/viewthread.php?tid=2373&highlight=winrar%2Bchijanzen
把参数写成" a -e ...

问题得到了解决。

TA的精华主题

TA的得分主题

发表于 2012-5-31 09:42 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 shaowu459 于 2012-5-31 09:44 编辑

用法:     rar <命令> -<开关 1> -<开关 N> <压缩文件> <文件...>
               <@列表文件...> <解压路径">

<命令>
a             添加文件到压缩文件
c             添加压缩文件注释
cf            添加文件注释
cw            写入压缩文件注释到文件
d             删除压缩文件中的文件
e             解压压缩文件到当前目录
f             刷新压缩文件中的文件
i[参数]=<串> 在压缩文件中查找字符串
k             锁定压缩文件
l[t,b]        列出压缩文件[技术信息,简洁]
m[f]          移动到压缩文件[仅对文件]
p             打印文件到标准输出设备
r             修复压缩文件
rc            重建丢失的卷
rn            重命名压缩文件
rr[N]         添加数据恢复记录
rv[N]         创建恢复卷
s[名字|-]     转换压缩文件为自解压格式或转换回压缩文件
t             测试压缩文件
u             更新压缩文件中的文件
v[t,b]        详细列出压缩文件[技术信息,简洁]
x             用绝对路径解压文件

<开关>
-             停止扫描
ac            压缩或解压后清除存档属性
ad            添加压缩文件名到目标路径
ag[格式]      使用当前日期生成压缩文件名
ao            添加具有压缩属性的文件
ap<格式>      添加路径到压缩文件中
as            同步压缩文件内容
av            添加用户身份校验(仅注册版本可用)
av-           禁用用户身份校验
c-            禁用注释显示
cfg-          禁用读取配置
cl            名称转换为小写
cu            名称转换为大写
df            压缩后删除文件
dh            打开共享文件
ds            对固实压缩文件禁用名称排序
e[+]<属性>    设置文件排除和包括属性
ed            不添加空目录
en            不添加"压缩文件结束"标志
ep            从名称中排除路径
ep1           从名称中排除基本目录
ep2           展开为完整路径
ep3           扩展路径为包含盘符的完全路径
f             刷新文件
hp[密码]      同时加密文件数据和文件头
id[c,d,p,q]   禁用消息
ieml[属性]    用 E-mail 发送压缩文件
ierr          发送所有消息到标准错误设备
ilog[名称]    把错误写到日志文件(只有注册版本可用)
inul          禁用所有消息
ioff          完成一个操作后关闭 PC 电源
isnd          启用声音
k             锁定压缩文件
kb            保留损坏的已解压文件
m<0..5>       设置压缩级别(0-存储...3-默认...5-最大)
mc<参数>      设置高级压缩参数
md<大小>      以KB为单位的字典大小(64,128,256,512,1024,2048,4096 or A-G)
ms[ext;ext]   指定存储的文件类型
n<文件>       仅包含指定的文件
n@            从标准输入设备读取文件名到包括
n@<列表>      在指定的文件列表包括文件
o+            覆盖已存在文件
o-            不覆盖已存在文件
oc            设置 NTFS 压缩属性
os            保存 NTFS 流
ow            保存或恢复文件所有者和组
p[密码]       设置密码
p-            不询问密码
r             递归子目录
r0            仅递归通配符名称的子目录
ri<P>[:<S>]   设置优先级(0-默认,1-最小..15-最大)和以毫秒为单位的休眠时间
rr[N]         添加数据恢复记录
rv[N]         创建恢复卷
s[<N>,v[-],e] 创建固实压缩文件
s-            禁用固实压缩文件
sfx[名称]     创建自解压压缩文件
st[名称]      从标准输入设备读取数据(stdin)
t             压缩后测试文件
ta<日期>      添加日期 <日期> 后修改的文件,日期格式 YYYYMMDDHHMMSS
tb<日期>      添加日期 <日期> 前修改的文件,日期格式 YYYYMMDDHHMMSS
tk            保留原始压缩文件时间
tl            设置压缩文件时间为最新文件时间
tn<时间>      添加 <时间> 以后的文件
to<时间>      添加 <时间> 以前的文件
ts<m,c,a>[N] 保存或恢复文件时间(修改,创建,访问)
u             更新文件
v             自动检测创建卷的大小或者列出所有的卷
v<大小>[k,b] 创建卷大小=<大小>*1000 [*1024, *1]
vd            创建容量前清除磁盘内容
ver[n]        文件版本控制
vn            使用旧风格的卷命名方案
vp            每卷之前暂停
w<路径>       指定工作目录
x<文件>       排除指定的文件
x@            从标准输入设备读取要排除的文件名
x@<列表>      排除指定列表文件中的文件
y             假设对全部询问都回答是
z<文件>       从文件读取压缩文件注释


举个例子:

1. 建立一个批处理文件,里头起作用的只有1行:)

=======================================

BackFav.bat(名字可以随便起)文件内容:

REM 这个批处理文件是用来自动备份我的收藏夹
REM WinRAR <命令> -<开关1> -<开关N> <压缩文件> <文件...> <@列表文件...> <解压路径">
"D:"Program Files"WinRAR"WinRAR.exe" a -as -r -sfx -zsfxpara.txt -EP1 "d:"my documents"Favorites.exe" "%USERPROFILE%"Favorites"

=========================================

参数说明:

a:                   添加指定的文件(源目录,这里是"%USERPROFILE%"Favorites")和文件夹到压缩文件(目标文件,这里是"d:"my documents"Favorites.exe")中。

-as:                这是一个开关,指添加方式是“同步压缩文件内容”

-r:                  表示“包含子文件夹”

-sfx:               表示建立的是一个自解压文件

-zsfxpara.txt: 从文件sfxpara.txt读取压缩文件注释,这注释有什么用后面解释

-ep1:             表示不把路径%USERPROFILE%保存在压缩文件中


2. 注释文件的作用

建立压缩文件的时候不光要考虑压缩那些文件,还要考虑怎么解压缩。通过注释文件可以向压缩包传递许多有用的信息。

sfxpara.txt内容:

PATH=%USERPROFILE%"
Silent=1

上面是百度到的一些命令行参数资料,可以看自己的习惯更改一些参数,比如说替换压缩包中的文件,而不是累计压缩在里面。

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-5-31 09:59 | 显示全部楼层
shaowu459 发表于 2012-5-31 09:42
用法:     rar  - -  
               
"D:"Program Files"WinRAR"WinRAR.exe" a -as -r -sfx -zsfxpara ...

嗯。多谢
另外发现一个问题,需要先打开excel文件,再打开论坛附件,这样压缩才行。不然就会出现,无法运行Microsoft、excel等等信息。
不知道是不是没有引用到启动文件。

点评

是吗,我测试一下。  发表于 2012-5-31 10:03

TA的精华主题

TA的得分主题

发表于 2012-5-31 10:01 | 显示全部楼层
需要注意一些地方:需要被压缩的文件必须是活动工作簿,选中任意单元格就行。文件特别大的话,压缩时间长,可能出错。我感觉可能是在压缩过程中就把中间被压缩的文件用代码删除了的缘故。
绝大部分文件能正常压缩,如果运行不顺利出错的话就end了吧,然后照平常一样手动压缩:)

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-5-31 10:01 | 显示全部楼层
shaowu459 发表于 2012-5-31 09:42
用法:     rar  - -  
               
"D:"Program Files"WinRAR"WinRAR.exe" a -as -r -sfx -zsfxpara ...

未命名.jpg

点评

这些参数我也不太懂,只能自己试试了,需要用哪个,看哪个能用:)  发表于 2012-5-31 10:13

TA的精华主题

TA的得分主题

发表于 2012-5-31 10:12 | 显示全部楼层
熊小华 发表于 2012-5-31 09:59
嗯。多谢
另外发现一个问题,需要先打开excel文件,再打开论坛附件,这样压缩才行。不然就会出现,无法运 ...

我这里显示没有问题,关闭excel程序,到网站上打开一个文件(这时不就自动启动excel程序了么,只是文件在临时文件夹里),然后点击按钮,压缩成功,存档成功。
BB.gif
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-11 05:41 , Processed in 0.033779 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表