1234

ExcelHome技术论坛

用户名  找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

求助:解压及合并文件夹代码不能运行

[复制链接]

TA的精华主题

TA的得分主题

发表于 2025-1-31 09:29 | 显示全部楼层 |阅读模式
本帖最后由 999lhg999 于 2025-1-31 13:13 编辑

各位版主和各位高手,大家好!

    得到了一段代码,想实现下面功能。但这段代码不能运行,恳请大家能指点!谢谢大家!!!
    检查并解压ZIP和RAR文件,然后删除已解压的压缩文件。
    将每个子文件夹中不在根目录中的文件移到根目录,并删除子文件夹中的文件,使子文件夹为空。
    删除已清空的子文件夹。

Sub ProcessFilesInFolder()
    Dim rootFolder As String
    Dim folder As Object
    Dim subFolder As Object
    Dim file As Object
    Dim shell As Object
    Dim fso As Object
    Dim zipFiles As Object
    Dim rarFiles As Object
    Dim cmd As String
    Dim fileName As String
    Dim moveFile As Boolean
   
    ' 设置目标文件夹路径
    rootFolder = "C:\path\to\Mubao"  ' 修改为实际路径
   
    ' 创建文件系统对象和Shell对象
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set shell = CreateObject("WScript.Shell")
   
    ' 检查并处理目标文件夹中的压缩文件
    Set zipFiles = fso.GetFolder(rootFolder).Files
    Call ProcessZipAndRar(zipFiles, fso, shell, rootFolder)
   
    ' 处理子文件夹中的文件
    Call ProcessSubFolders(fso.GetFolder(rootFolder), fso, rootFolder)
   
    ' 删除空子文件夹
    Call DeleteEmptySubFolders(fso.GetFolder(rootFolder), fso)

    MsgBox "处理完成!"
End Sub

Sub ProcessZipAndRar(files As Object, fso As Object, shell As Object, rootFolder As String)
    Dim file As Object
    Dim cmd As String
    For Each file In files
        ' 如果是ZIP文件
        If LCase(fso.GetExtensionName(file.Name)) = "zip" Then
            ' 解压ZIP文件
            cmd = "7z x """ & file.Path & """ -o""" & rootFolder & """"
            shell.Run cmd, 0, True
            ' 删除ZIP文件
            fso.DeleteFile file.Path
        End If
        ' 如果是RAR文件
        If LCase(fso.GetExtensionName(file.Name)) = "rar" Then
            ' 解压RAR文件
            cmd = "7z x """ & file.Path & """ -o""" & rootFolder & """"
            shell.Run cmd, 0, True
            ' 删除RAR文件
            fso.DeleteFile file.Path
        End If
    Next file
End Sub

Sub ProcessSubFolders(folder As Object, fso As Object, rootFolder As String)
    Dim subFolder As Object
    Dim file As Object
    Dim moveFile As Boolean
    For Each subFolder In folder.Subfolders
        For Each file In subFolder.Files
            ' 如果文件不在根目录下
            If Not fso.FileExists(rootFolder & "\" & file.Name) Then
                ' 将文件移动到根目录
                fso.MoveFile file.Path, rootFolder & "\" & file.Name
            Else
                ' 如果文件已存在,则删除子文件夹中的该文件
                fso.DeleteFile file.Path
            End If
        Next file
        ' 删除已清空的子文件夹
        If fso.GetFolder(subFolder.Path).Files.Count = 0 And fso.GetFolder(subFolder.Path).Subfolders.Count = 0 Then
            fso.DeleteFolder subFolder.Path
        End If
    Next subFolder
End Sub

Sub DeleteEmptySubFolders(folder As Object, fso As Object)
    Dim subFolder As Object
    For Each subFolder In folder.Subfolders
        ' 如果子文件夹为空,则删除它
        If fso.GetFolder(subFolder.Path).Files.Count = 0 And fso.GetFolder(subFolder.Path).Subfolders.Count = 0 Then
            fso.DeleteFolder subFolder.Path
        End If
    Next subFolder
End Sub

==============================

shell.Run cmd, 0, True,这里有错,不会修改了






1.tar

149.5 KB, 下载次数: 1

TA的精华主题

TA的得分主题

 楼主| 发表于 2025-1-31 13:11 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
shell.Run cmd, 0, True,这里有问题,不会了!

TA的精华主题

TA的得分主题

发表于 2025-1-31 14:23 | 显示全部楼层
7z 需要使用全目录,例如 C:\Program Files\7-Zip\7z.exe

TA的精华主题

TA的得分主题

发表于 2025-1-31 14:31 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2025-1-31 15:24 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
taller 发表于 2025-1-31 14:23
7z 需要使用全目录,例如 C:\Program Files\7-Zip\7z.exe

谢谢,原来是7z存在问题,现在能运行了,但没达到目的。运行后所有的文件都给删除了!

TA的精华主题

TA的得分主题

 楼主| 发表于 2025-1-31 15:25 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2025-1-31 15:29 | 显示全部楼层
原来是7Z安装存在问题,现在可运行了。但运行后把所有的文件都删除了。没达到目的,各位有测听力的,帮忙修改一啊你!多谢了!

TA的精华主题

TA的得分主题

 楼主| 发表于 2025-2-1 07:43 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2025-2-1 23:58 | 显示全部楼层
999lhg999 发表于 2025-1-31 15:24
谢谢,原来是7z存在问题,现在能运行了,但没达到目的。运行后所有的文件都给删除了!

单步执行代码,看看是哪里逻辑不对(删除文件)
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

1234

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

GMT+8, 2025-3-9 04:21 , Processed in 0.024789 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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