ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享] 如何将工作簿另存为2003版的同时压缩

[复制链接]

TA的精华主题

TA的得分主题

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

问题起源于目前论坛回帖的excel表格附件只能是压缩附件。我知道下载了压缩包后直接双击压缩包然后在直接打开的文件里操作,最后点击保存即可将改动记录在压缩包里。

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

请教,是否可以帮我写一个宏,然后我加载到工具栏上,这样每次我在网页上直接打开的工作簿或者本地的桌面工作簿编辑完毕后,只需点击该按钮即可将相应的压缩文件保存在桌面上。这样就可以省去一些工作量,否则按照我现在的习惯,打开--》另存--》编辑代码或公式--》压缩--》回帖上传,每天会操作很多次,比较麻烦。

请教各位是否可以编写这样的代码来简化这些操作?谢谢。目前我装的压缩软件是winzip,如果需要软件路径的话回头我可以上传,或者代码里我可以自己修改。

谢谢。如果我解释的不清楚,麻烦跟帖询问,再次感谢。


该贴已经同步到 shaowu459的微博

TA的精华主题

TA的得分主题

发表于 2012-5-8 12:52 | 显示全部楼层
好想法,我不行,帮你顶一下

点评

因为每天这样的操作太多了,主要是在论坛回帖。因为有些求助者对直接上的公式或者代码不知道怎么用,只能给他写在附件里。  发表于 2012-5-8 12:53

TA的精华主题

TA的得分主题

发表于 2012-5-8 13:04 | 显示全部楼层
shaowu459 老师的认真负责的态度很让人折服,我也早有这种想法,一直没提出来。顶一下!!!

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-5-8 18:07 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
下班前自己顶贴,因为感觉这个功能就混EH来说很方便。

TA的精华主题

TA的得分主题

发表于 2012-5-9 00:11 | 显示全部楼层
本帖最后由 AVEL 于 2012-5-9 00:34 编辑

Option Explicit
Sub Winrar()
    Dim TheRarexe As String    'WINRAR程序的位置
    Dim TheSource As String    '压缩前的源文件
    Dim TheTarget As String    '压缩好的文件
    Dim TheFileString As String
    Dim TheResult As Long
    With ActiveWorkbook
        TheRarexe = "C:\program files\winrar\winrar" '系统WINRAR路径
        .SaveCopyAs "D:\" & .Name '另存为D盘根目录下,作为压缩用的临时文件
        TheSource = "D:\" & .Name    '临时文件作为压缩源文件
        TheTarget = "D:\" & "EH(超人)-" & Mid(.Name, 1, InStrRev(.Name, ".") - 1) & ".rar" '保存到D盘根目录,以超人带头命名如何? :)
        TheFileString = TheRarexe & " a " & TheTarget & " " & TheSource
        TheResult = Shell(TheFileString, vbHide) '压缩
        Kill TheSource '删除临时文件
    End With
End Sub

搜索论坛里面的求助文件修改了一下
原帖如下:
请问压缩文件夹的代码怎么写?
http://club.excelhome.net/thread-507426-1-1.html

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-5-9 08:17 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
AVEL 发表于 2012-5-9 00:11
Option Explicit
Sub Winrar()
    Dim TheRarexe As String    'WINRAR程序的位置

呵呵,谢谢了。甚合我意,尤其是文件命中“超人”二字总得极为精妙,堪称绝世好文也:)。一会到了公司试试,压缩软件ZIP。

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-5-9 14:36 | 显示全部楼层
  1. Sub Winrar()
  2.     Dim TheRarexe As String    'WINRAR程序的位置
  3.     Dim TheSource As String    '压缩前的源文件
  4.     Dim TheTarget As String    '压缩好的文件
  5.     Dim TheFileString As String
  6.     Dim TheResult As Long
  7.     With ActiveWorkbook
  8.         TheRarexe = "C:\Program Files\WinZip\WINZIP32"    '系统WINRAR路径
  9.         .SaveCopyAs "C:\Users\clarkshao\Desktop\1" & .Name    '另存为D盘根目录下,作为压缩用的临时文件
  10.         TheSource = "C:\Users\clarkshao\Desktop\1" & .Name    '临时文件作为压缩源文件
  11.         
  12.         TheTarget = "C:\Users\clarkshao\Desktop\EH(超人)-" & Mid(.Name, 1, InStrRev(.Name, ".") - 1) & ".zip"  '保存到目录

  13.         TheFileString = TheRarexe & " -min -a " & TheTarget & " " & TheSource
  14.         
  15.         MsgBox TheFileString
  16.         
  17.         TheResult = Shell(TheFileString, vbHide)    '压缩

  18.         Kill TheSource    '删除临时文件
  19.     End With
  20. End Sub
复制代码
我晕菜了,这个代码时而行时而不行。。。对同一文件运行多次,有的时候行有的时候不行。有的时候逐句按F8运行是可以的,点击绿色按钮执行就不成。
各位能帮再看看么?是不是结束的时候要用什么语句关闭winzip的进程?

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-5-9 14:39 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
我猜到可能是什么原因了。在
18.        TheResult = Shell(TheFileString, vbHide)    '压缩
19.
20.        Kill TheSource    '删除临时文件
之间的19行随便加点代码,比如说msgbox 111即可实现功能。是不是winzip压缩的过程中就执行了 the source这句代码造成的,也就是说代码执行的快,已经删除了文件,但是winzip还没有执行完毕?

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-5-9 15:07 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 shaowu459 于 2012-5-9 17:13 编辑

  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.     With ActiveWorkbook
  9.         TheRarexe = "C:\Program Files\WinZip\WINZIP32"    '系统WINRAR路径
  10.         .SaveCopyAs "C:\Users\clarkshao\Desktop\EH(超人)-" & Format(Date, "yyyy.mm.dd") & "-" & .Name   '另存为D盘根目录下,作为压缩用的临时文件
  11.         TheSource = "C:\Users\clarkshao\Desktop\EH(超人)-" & Format(Date, "yyyy.mm.dd") & "-" & .Name  '临时文件作为压缩源文件
  12.         TheTarget = "C:\Users\clarkshao\Desktop\EH(超人)-" & Format(Date, "yyyy.mm.dd") & "-" & Mid(.Name, 1, InStrRev(.Name, ".xl") - 1) & ".zip"       '保存到目录
  13.         TheFileString = TheRarexe & " -min -a " & TheTarget & " " & TheSource
  14.         TheResult = Shell(TheFileString, vbHide)    '压缩
  15.         Application.Wait Now + TimeValue("00:00:02")
  16.         Kill TheSource    '删除临时文件
  17.         .SaveAs "C:\Users\clarkshao\Desktop\EH(超人)帖子附件\EH(超人)-" & Format(Date, "yyyy.mm.dd") & "-" & .Name     '另存为D盘根目录下,作为压缩用的临时文件
  18.     End With
  19.     Application.DisplayAlerts = True
  20. End Sub
复制代码
终于搞定了!!

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-5-9 17:14 | 显示全部楼层
9楼代码更新了,加入了存储日期,方便以后查询
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-11 05:52 , Processed in 0.026228 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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