提取子文件夹所有文件

介绍了在Windows系统主文件夹的操作,在主文件夹搜索栏输入【*】,将搜索结果列表中的文件进行剪切,然后粘贴到新文件夹。

在主文件夹的搜索栏输入【*】,剪切结果列表中的文件,粘贴到新文件夹

可以使用VBA代码递归遍历文件夹及其文件夹提取文件。以下是一个示例代码,其功能是提取指定文件夹及其所有文件夹下的文件,并将文件的名称、路径、大小和创建日期显示在Excel工作表中: ```vba Sub ExtractFilesFromSubfolders() ' 清空A2到D1000单元格的内容 Range("A2:D1000").ClearContents ' 错误处理,忽略运行时错误 On Error Resume Next ' 创建Shell.Application对象 Dim shell As Variant Set shell = CreateObject("Shell.Application") ' 弹出文件夹选择对话框 Set filePath = shell.BrowseForFolder(&O0, "选择文件夹", &H1 + &H10, "") ' 释放Shell.Application对象 Set shell = Nothing ' 检查用户是否选择了文件夹 If filePath Is Nothing Then ' 若未选择,退出程序 Exit Sub Else ' 获取选择的文件夹路径 gg = filePath.Items.Item.Path End If ' 创建Scripting.FileSystemObject对象 Set obj = CreateObject("Scripting.FileSystemObject") ' 调用递归函数获取所有文件 Call GetFiles(gg, obj) ' 提示用户操作完成 MsgBox "文件提取完成。" End Sub ' 递归函数,用于获取指定文件夹及其文件夹中的所有文件 Sub GetFiles(folderPath, fso) ' 定义文件夹对象 Dim folder As Object Set folder = fso.GetFolder(folderPath) ' 定义文件对象 Dim file As Object ' 初始化行索引 Dim rowIndex As Long rowIndex = Cells(Rows.Count, 1).End(xlUp).Row + 1 ' 遍历文件夹中的所有文件 For Each file In folder.Files ' 在工作表中显示文件信息 Cells(rowIndex, 1) = file.Name Cells(rowIndex, 2) = file.Path Cells(rowIndex, 3) = file.Size Cells(rowIndex, 4) = file.DateCreated rowIndex = rowIndex + 1 Next file ' 定义文件夹对象 Dim subfolder As Object ' 遍历文件夹中的所有文件夹 For Each subfolder In folder.SubFolders ' 递归调用GetFiles函数,处理文件夹 Call GetFiles(subfolder.Path, fso) Next subfolder End Sub ``` ### 代码解释 1. **`ExtractFilesFromSubfolders` 程序**: - 清空A2到D1000单元格的内容。 - 弹出文件夹选择对话框,让用户选择要提取文件文件夹。 - 创建 `Scripting.FileSystemObject` 对象。 - 调用 `GetFiles` 函数,开始递归提取文件。 - 提示用户操作完成。 2. **`GetFiles` 程序**: - 获取指定文件夹中的所有文件,并将文件的名称、路径、大小和创建日期显示在工作表中。 - 遍历文件夹中的所有文件夹,并递归调用 `GetFiles` 函数,处理文件夹。 ### 运行代码 1. 打开Excel文件。 2. 按下 `Alt + F11` 打开VBA编辑器。 3. 在VBA编辑器中,插入一个新的模块。 4. 将上述代码复制到新模块中。 5. 运行 `ExtractFilesFromSubfolders` 程序。 6. 在弹出的文件夹选择对话框中,选择要提取文件文件夹。 7. 程序将自动提取文件夹及其所有文件夹下的文件,并将文件信息显示在工作表中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ailsa2019

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值