ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 文件解压

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-12-14 14:14 | 显示全部楼层
要删除Office,干嘛不把系统也删了呢?哈哈

TA的精华主题

TA的得分主题

发表于 2017-12-14 14:17 | 显示全部楼层
建议你用winrar或者7z.这两个一个有免费版,一个就是开源的。360zip的官方条款里就已经说明了软件部分代码来自winrar,部分来自7z.你还不如直接用后面两个。节省点时间。

TA的精华主题

TA的得分主题

发表于 2017-12-14 16:03 | 显示全部楼层
试试Shell:Sub Test()
    Dim objShell As Object
    Dim objFolder As Object
    Dim objFile As Object

    Set objShell = CreateObject("shell.application")
    Set objFolder = objShell.Namespace("F:\") '如果括号内容用变量的话一定要是Variant类型
    Set objFile = objFolder.ParseName("1.rar")

    objFile.InvokeVerb "解压到当前文件夹(&X)" '。不同语言版本的命令文字不同,具体参考文件夹或文件的右键菜单

    Set objFile = Nothing
    Set objFolder = Nothing
    Set objShell = Nothing
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-12-14 18:09 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
jsgj2023 发表于 2017-12-14 14:14
要删除Office,干嘛不把系统也删了呢?哈哈

office 有山寨的 wps
window  山寨版有嘛?若有,总行一声令下,使用国产! 下级谁敢不服从?

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-12-14 18:12 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
fxl447098457 发表于 2017-12-14 14:17
建议你用winrar或者7z.这两个一个有免费版,一个就是开源的。360zip的官方条款里就已经说明了软件部分代码 ...

谢谢您的建议,我们的爷爷在北京,他说什么就是什么,我们除了服从,没有其他选项

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-12-14 18:13 | 显示全部楼层
wcymiss 发表于 2017-12-14 16:03
试试Shell:Sub Test()
    Dim objShell As Object
    Dim objFolder As Object

非常感谢,明天上班试试

TA的精华主题

TA的得分主题

发表于 2017-12-14 21:33 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
测试通过
  1. Private Declare Function SetWindowPos Lib "user32" (ByVal HWnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
  2. Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
  3. Sub UnRarFile()   '解压缩程序
  4. Dim P&
  5. P = Shell("E:\program files\360\360zip\360zip.exe " & " D:\TEST\TEST.ZIP ", vbNormalFocus)
  6. SetWindowPos P, -1, 0, 0, 0, 0, 2
  7. Sleep 1500
  8. SendKeys "%E", True
  9. SendKeys "{Enter}"
  10. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-12-15 17:40 | 显示全部楼层

非常感谢northwolves老师,可以实现。
不过有2个细小的问题,其实也不是大问题:解压后,桌面上,解压后产生的文件夹、360应用程序是打开的。
而程序菜单中且好有这两个选项,我处理后,文件夹是关闭了,但对应用程序似乎无效,大概这与程序操作有关吧,这个只是随便提提,关系不大,也是可以解决的

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-12-15 17:52 | 显示全部楼层
wcymiss 发表于 2017-12-14 16:03
试试Shell:Sub Test()
    Dim objShell As Object
    Dim objFolder As Object

谢谢wcymiss老师:
    为了看您这个东西,今天从网上下载了 shell的属性和方法,好好学习了一遍,且在excel中引用后,对象、访求、属性都能查到。
    您的代码也没错啊,可是,运行后,没出错也没结果,是我的参数错了?今天一直在试,就是没结果
    另外,也尝试用getobject取的文件对象objfile,可这个函数就是出错,但换成excel\word却正常了,难道getobject函数的使用范围有限制?

TA的精华主题

TA的得分主题

发表于 2021-3-22 14:50 | 显示全部楼层
比如,我的D盘,有"火柴大师.ZIP"需要解压,我用的是“好压”。
我使用的方法:
  1. Sub Test()
  2.     Dim objShell As Object
  3.     Dim objFolder As Object
  4.     Dim objFile As Object

  5.     Set objShell = CreateObject("shell.application")
  6.     Set objFolderItem = objShell.NameSpace("D:").Items().Item("火柴大师.zip")
  7.     Set objFIVs = objFolderItem.Verbs()
  8.     For i = 0 To objFIVs.count - 1
  9.         'MsgBox objFIVs.Item(i)
  10.         Set objFIV = objFIVs.Item(i)
  11.         If objFIV.Name = "解压到当前文件夹(&X)" Then '右键菜单中在中文系统是"打开(&O)",英文自己改'"解压到 火柴大师\(&E)"
  12.         objFIV.DoIt
  13.         Exit For
  14.         End If
  15.     Next
  16. End Sub
复制代码

那么“火柴大师”几个文件,就解压到当前文件夹。方法特别牛,是一个大师研究的。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-9-29 18:29 , Processed in 0.032958 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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