ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[交流] 推荐觉得论坛回帖过程中下载附件,解压缩,编辑后再压缩繁琐的朋友进来看看

[复制链接]

TA的精华主题

TA的得分主题

发表于 2012-5-10 13:51 | 显示全部楼层 |阅读模式
本帖最后由 shaowu459 于 2012-6-1 10:05 编辑

【关于winrar压缩文件的代码参见:http://club.excelhome.net/forum.php?mod=viewthread&tid=874971&page=1#pid5988428,注意按照3楼的说明修改一下参数即可】

目前论坛回帖的excel表格附件只能是压缩附件,对于经常在论坛帮助大家答疑解惑的人来说频繁的下载,解压缩,再压缩很麻烦,且自己存档后也不方便查找,除非手动自己重命名文件。

但是目前个人的习惯是这样的:在帖子中直接点击比如说一楼的压缩文件,不选择下载,选择直接打开,然后简单问题可能先写公式然后另存到桌面上,复杂问题就先另存excel表到桌面上,然后再编辑,等做好了再压缩,然后回帖上传。另外,我也喜欢将工作簿存档留待以后学习参考,而不是压缩文件。

这两天通过求助AVEL和自己的摸索,我完善了一个保存压缩文件的宏,调用本地的压缩软件(http://club.excelhome.net/thread-865133-1-1.html)直接压缩文件并存档。在论坛上直接选择打开压缩文件,编辑公式后点击按钮运行该宏,则该文件被压缩放在桌面上方便直接回帖上传,而相应的工作簿也会按照时间命名保存在自己需要的位置留作存档,方便以后检索使用。同时,工作簿名称也标准化了。

代码之所以有两部分是因为第一次存储后我可能又想到更好的方法或者去完善原来做的公式或者代码,然后再次压缩时工作簿已经是标准名称了,加上了名称和时间的前缀(比如我设置的EH(超人)),这样就不用再在文件名前加前缀了,只更新时间即可。

详细操作过程参见操作动画。后附代码(可以参考自己电脑的压缩文件位置和想要的文件前缀修改,代码中的注解我没有更新)。代码可以存在压缩文件或者加载宏中,然后工具栏指定一个按钮。

  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\WinZip\WINZIP32"    '系统WINRAR路径
  11.             '.SaveCopyAs "C:\Users\clarkshao\Desktop\EH(超人)-" & Format(Date, "yyyy.mm.dd") & "-" & .Name   '另存为D盘根目录下,作为压缩用的临时文件
  12.             .SaveCopyAs "C:\Users\clarkshao\Desktop\EH(超人)-" & Format(Date, "yyyy.mm.dd") & Mid(.Name, 18, InStrRev(.Name, ".xl") - 1)    '另存为D盘根目录下,作为压缩用的临时文件
  13.             TheSource = "C:\Users\clarkshao\Desktop\EH(超人)-" & Format(Date, "yyyy.mm.dd") & Mid(.Name, 18, InStrRev(.Name, ".xl") - 1)  '临时文件作为压缩源文件
  14.             TheTarget = "C:\Users\clarkshao\Desktop\EH(超人)-" & Format(Date, "yyyy.mm.dd") & Mid(.Name, 18, InStrRev(.Name, ".xl") - 18) & ".zip"       '保存到目录
  15.             TheFileString = TheRarexe & " -min -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)     '另存为D盘根目录下,作为压缩用的临时文件
  20.         End With

  21.     Else

  22.         With ActiveWorkbook
  23.             TheRarexe = "C:\Program Files\WinZip\WINZIP32"    '系统WINRAR路径
  24.             .SaveCopyAs "C:\Users\clarkshao\Desktop\EH(超人)-" & Format(Date, "yyyy.mm.dd") & "-" & .Name   '另存为D盘根目录下,作为压缩用的临时文件
  25.             TheSource = "C:\Users\clarkshao\Desktop\EH(超人)-" & Format(Date, "yyyy.mm.dd") & "-" & .Name  '临时文件作为压缩源文件
  26.             TheTarget = "C:\Users\clarkshao\Desktop\EH(超人)-" & Format(Date, "yyyy.mm.dd") & "-" & Mid(.Name, 1, InStrRev(.Name, ".xl") - 1) & ".zip"       '保存到目录
  27.             TheFileString = TheRarexe & " -min -a " & TheTarget & " " & TheSource
  28.             TheResult = Shell(TheFileString, vbHide)    '压缩
  29.             Application.Wait Now + TimeValue("00:00:02")
  30.             Kill TheSource    '删除临时文件
  31.             .SaveAs "C:\Users\clarkshao\Desktop\EH(超人)帖子附件\EH(超人)-" & Format(Date, "yyyy.mm.dd") & "-" & .Name     '另存为D盘根目录下,作为压缩用的临时文件
  32.         End With


  33.     End If


  34.     Application.DisplayAlerts = True
  35. End Sub
复制代码


积分马上到达5位数字了,截图留念。
测试用.gif
积分到万以前.png

评分

4

查看全部评分

TA的精华主题

TA的得分主题

发表于 2012-5-10 14:11 | 显示全部楼层
感谢shaowu459 老师!太需要了!
力顶......

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2012-5-10 18:27 | 显示全部楼层
回帖的附件都各式各样的。
如果可以用超人的办法规范一下,那是最好不过了。
推荐大家都试试。

点评

再次感谢给我提供的代码解决方案  发表于 2012-5-10 18:37

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2012-5-10 18:44 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
此贴必火,,收藏了,学习下代码的写法和思路。
慢慢就可以规范化了。

点评

其实关键还在于每个人上传的附件有一个合适的能代表问题的名称  发表于 2012-5-10 18:45

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-5-11 14:55 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
晒晒这两天用这个方法存档的文件(简单函数应用的就没存了,要不然文件太多),这些都是留着以后能直接使用,或以后直接回帖用的。稍微差一点的就是求助的楼主没有对工作簿做一个有代表性的名称。
飞信截图20120511145224.png

TA的精华主题

TA的得分主题

发表于 2012-5-14 17:26 | 显示全部楼层
好一个有心人,我代表自己表示高度认同!!

点评

论坛没有自动机制,只能靠我们自己一点点来规范化了。  发表于 2012-5-14 17:30

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2012-5-21 12:56 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
原来这样都可以的啊{:soso_e113:}

点评

这样就可以自动压缩和存档了,省的麻烦,而且命名都有固定的前缀,排序或者查找均方便一些  发表于 2012-5-21 12:57

TA的精华主题

TA的得分主题

发表于 2012-5-30 15:12 | 显示全部楼层
{:soso_e179:}原来我还在农耕时代啊

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2012-6-1 09:01 | 显示全部楼层
赶紧去试试!
谢谢分享了。
期待持续有这种好东西分享哦!

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-6-1 09:20 | 显示全部楼层
华小熊同学已经做好了wirar代码的,有个帖子在vba区。改下存储路径就行了
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-11 02:45 , Processed in 0.026327 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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