加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

VBA调用RAR软件进行文件的压缩和解压

(2013-01-28 15:13:00)
标签:

压缩

解压缩

分类: excel-vba
'妙用VBA调用RAR软件进行文件的压缩和解压
'作者:轩辕轼轲   博文日期: 2012-12-20 07:31:50  分类:  VBA编程
'其实整个过程就是利用WinRAR的压缩命令来完成,而在VBA中利用Shell函数来运行这个命令,具体介绍如下:

'一?Shell函数
'        Shell函数是VB中的内部函数,它负责执行一个可执行文件,返回一个Variant(Double),如果成功的话,代表这个程序的进程ID,若不成功,则会返回0。
'        (PS:这个函数也可以在VBA中使用。)

'        Shell的语法是:Shell(PathName[,WindowStyle])。

'        PathName:为必需参数。类型为String,它指出了要执行的程序名,以及任何需要的参数或命令行变量,也可以包括路径名。
'        WindowStyle:为可选参数。Integer类型,指定在程序运行时窗口的样式。WindowStyle有以下这些值。
'
'        常量值 描述
'        VbHide  0  窗口被隐藏,且焦点会移到隐式窗口。
'        VbNormalFocus  1  窗口具有焦点,且会还原到它原来的大小和位置。
'        VbMinimizedFocus  2  窗口会以一个具有焦点的图标来显示(缺省值)。
'        VbMaximizedFocus  3  窗口是一个具有焦点的最大化窗口。
'        VbNormalNoFocus  4  窗口会被还原到最近使用的大小和位置,而当前活动的窗口仍然保持活动。
'        VbMinimizedNoFocus  6  窗口会以一个图标来显示,而当前活动的窗口仍然保持活动。

'二?关于WinRar的用法
'
        
        '压缩:
'        WINRAR A [-switches] [Files] [@Filelists]
'        例如你想把try.mdb压缩到C盘下,可以WINRAR A C:\try.rar C:\try.mdb

        '解压缩:如果带目录解压缩
'         WINRAR X [-switches] [Files] [@Filelists] [destionationfolder]
'        如果在当前目录解压缩,即解压缩时不写目录名
'        WINRAR E [-switches] [Files] [@Filelists] [destionationfolder]
'        例如你想把try.rar解压缩到C盘下,可以WINRAR X C:\try.rar C:\try.mdb

'三?一个例子
'
'        在VBA中新建一个模块,在模块中添加两个子程序压缩文件和解压缩文件。
'        压缩文件子程序是把文件try.mdb压缩成try.rar?

    Sub 压缩文件()
        Dim Rarexe As String
        Dim Source As String
        Dim Target As String
        Dim FileString As String 'Shell指令中的字符串
        Dim Result As Long
        Rarexe = "C:\program files\winrar\winrar" 'WINRAR执行文件的位置
        Source = "C:\try.mdb" '压缩前的原始文件
        Target = "C:\try.rar" '压缩后的目标文件
        FileString = Rarexe & " a " & Target & " " & Source
        Result = Shell(FileString, vbHide)
    End Sub

'        解压的过程类似,解压缩文件子过程是把try.rar解压生成try.mdb。
'        在执行了上面的压缩过程后,可以删除文件try.mdb,来解压缩重新生成try.mdb。

    Sub 解压缩文件()
        Dim Rarexe As String
        Dim Source As String
        Dim Target As String
        Dim FileString As String 'Shell指令中的字符串
        Dim Result As Long
        Rarexe = "C:\program files\winrar\winrar" 'WINRAR执行文件的位置
        Source = "C:\try.rar" '解压缩前的原始文件
        Target = "C:\try.mdb" '解压缩后的目标文件
        FileString = Rarexe & " X " & Source & " " & Target
        Result = Shell(FileString, vbHide)
    End Sub



0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有