ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

VB中利用Winrar进行文件压缩

[复制链接]

TA的精华主题

TA的得分主题

发表于 2003-7-26 07:33 | 显示全部楼层 |阅读模式
说明:虽然不能自己进行解压但是达到目的就是好文章. VB中利用Winrar进行文件压缩 [ 王莉梅 2003年3月24日 ]   一些数据库文件(如Access文件)在远程传输过程中可能由于文件比较大而影响传递效果。如果进行压缩以后再传递,会减少传递时间,避免意外的发生,同时也保证了传递效果。我们在压缩文件时,最常用的压缩工具为WinRar和Winzip,笔者在VB编程过程中利用WinRar工具来压缩数据库文件,并完成远程传输,十分方便,在此向大家介绍一下。用WinZip的方法类似。 一、Shell函数   Shell函数是VB中的内部函数,它负责执行一个可执行文件,返回一个Variant(Double),如果成功的话,代表这个程序的进程ID,若不成功,则会返回0。   Shell的语法:Shell(PathName[,WindowStyle])。   PathName 为必需参数。类型为String,它指出了要执行的程序名,以及任何需要的参数或命令行变量,也可以包括路径名。   WindowStyle为可选参数。Integer类型,指定在程序运行时窗口的样式。WindowStyle有以下这些值。 常量 值 描述 VbHide 0 窗口被隐藏,且焦点会移到隐式窗口。 VbNormalFocus 1 窗口具有焦点,且会还原到它原来的大小和位置。 VbMinimizedFocus 2 窗口会以一个具有焦点的图标来显示(缺省值)。 VbMaximizedFocus 3 窗口是一个具有焦点的最大化窗口。 VbNormalNoFocus 4 窗口会被还原到最近使用的大小和位置,而当前活动的窗口仍然保持活动。 VbMinimizedNoFocus 6 窗口会以一个图标来显示,而当前活动的窗口仍然保持活动。 二、关于WinRar的用法   主要介绍以下如何在WinRar中用命令行来压缩和解压缩文件。   压缩:WINRAR A [-switches] [Files] [@File lists]   例如你想把try.mdb压缩到C盘下,可以WINRAR A C:\try.rar C:\try.mdb   解压缩:如果带目录解压缩       WINRAR X [-switches] [Files] [@File lists] [destionation folder\]       如果在当前目录解压缩,即解压缩时不写目录名       WINRAR E [-switches] [Files] [@File lists] [destionation folder\]   例如你想把try.rar解压缩到C盘下,可以WINRAR X C:\try.rar C:\try.mdb 三、一个例子   在VB中新建一个工程,在Form1中添加两个按钮Command1、Command2和Command3,把他们的Caption属性分别设为"压缩文件"、"解压缩文件"和"传递文件"。按Command1时把文件try.mdb压缩成try.rar。   Private Sub Command1_Click()   Dim Rarexe As String 'WINRAR执行文件的位置   Dim Source As String ' 压缩前的原始文件   Dim Target As String ' 压缩后的目标文件   Dim FileString as String 'Shell指令中的字符串   Dim Result As Long     Rarexe="C:\program files\winrar\winrar"   Source="C:\try.mdb"   Target="C:\try.rar"   FileString = rarexe & " a " & Target & " " & Source   Result = Shell(FileString, vbHide)   End Sub   解压的过程类似,按Command2可以把try.rar解压生成 try.mdb。在执行了上面的压缩过程后,可以删除文件try.mdb,来解压缩重新生成try.mdb。   Private Sub Command2_Click()   Dim Rarexe As String 'WINRAR执行文件的位置   Dim Source As String ' 解压缩前的原始文件   Dim Target As String ' 解压缩后的目标文件   Dim FileString as String 'Shell指令中的字符串   Dim Result As Long     Rarexe="C:\program files\winrar\winrar"   Source="C:\try.rar"   Target="C:\try.mdb"   FileString = rarexe & " X " & Source & " " & Target   Result = Shell(FileString, vbHide)   End Sub   文件从一台计算机传输到另一台计算机前,应知道另一台计算机的名字,然后用FileCopy语句就可以了。假设要把压缩后try.rar传递到计算机名为"other"的共享目录"want"下。   Private Sub Command3_Click()   Dim SourceFile, DestinationFile    SourceFile ="C:\try.rar " ' 指定源文件名。    DestinationFile = "\\other\want\try.rar" ' 指定目的文件名。    FileCopy SourceFile, DestinationFile ' 将源文件的内容复制到目的文件中。   End Sub   怎么样,十分简单吧?

TA的精华主题

TA的得分主题

发表于 2003-7-26 09:06 | 显示全部楼层
注意 缺省情况下,Shell 函数是以异步方式来执行其它程序的。也就是说,用 Shell 启动的程序可能还没有完成执行过程,就已经执行到 Shell 函数之后的语句。 所以以上代码如果是循环调用winrar压缩文件的话,就会出现一个文件还未成功,其它多个winrar窗口会同时跑出来的现象,严重时可能将计算机资源拖跨 现在winrar新版本已提供了将多个文件分别单独压缩的功能,不过在它出来之前我就想使用它个功能,就自己按楼主的思路做了一个,唯一不同的就是我利用api方式成功解决了Shell 函数是以异步方式来执行其它程序的缺憾. 这个就是我的程序,可惜现在不用它了:) bzzQeXpg.zip (8 KB, 下载次数: 109)

TA的精华主题

TA的得分主题

 楼主| 发表于 2003-7-26 16:45 | 显示全部楼层
谢谢指点,老用宏和帮助看来不够了,要看些VB方面的书了!

TA的精华主题

TA的得分主题

 楼主| 发表于 2003-7-27 13:31 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
依然有问题。如果压缩文件中有路径,就没办法指定,某个文件解压单个文件。 例如: 如何用命令指定解压上传文件TESTT.ZIP中的TEST3.TXT文件。 eVr7bJKg.zip (438 Bytes, 下载次数: 69)

TA的精华主题

TA的得分主题

发表于 2003-7-28 14:59 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
倒!别提winrar了,前几天上海比特瑞旺电脑有限公司给我们单位发函,要求我们提供WINRAR软件使用许可,真是晕倒!

TA的精华主题

TA的得分主题

 楼主| 发表于 2003-7-29 12:09 | 显示全部楼层
居然使用通配符可以.我倒.

TA的精华主题

TA的得分主题

发表于 2005-5-20 10:03 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
不说了,看不懂![em03]

TA的精华主题

TA的得分主题

发表于 2009-3-19 23:47 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
好东西,我正需要一个,谢谢
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-24 05:40 , Processed in 0.036929 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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