首页 > Office专区 > Excel教程 >

通过VBA提取文件夹下边所有文件信息

来源:互联网 2023-02-20 18:58:15 419

最近遇到一个问题:如何将文件夹里面(含子文件夹)相关信息(如:路径、文件名、类型、创建时间、修改时间等)导入到Excel表格?Du0办公区 - 实用经验教程分享!

虽然之前曾介绍过使用cmd命令的形式提取相关信息,但后续处理起来也比较麻烦,有些信息也提取不到。网上找了好多,几乎没有找到好用的,经过一段时间的思考之后,终于找到了一些窍门。Du0办公区 - 实用经验教程分享!

1如何把文件夹里的文件名快速导出到excel表格里Du0办公区 - 实用经验教程分享!

通过VBA提取文件夹下边所有文件信息Du0办公区 - 实用经验教程分享!

工具/原料

  • 操作设备:计算机
  • 操作系统:Windows 7
  • 办公软件:Excel 2010

方法/步骤

  • 1

    新建一个Excel工作表后打开,再按下【Alt F11】组合键调出VBE编辑器。Du0办公区 - 实用经验教程分享!

    通过VBA提取文件夹下边所有文件信息Du0办公区 - 实用经验教程分享!

  • 2

    点击【插入】、【模块】。Du0办公区 - 实用经验教程分享!

    通过VBA提取文件夹下边所有文件信息Du0办公区 - 实用经验教程分享!

  • 3

    在模块的代码框里面输入以下VBA程序:Du0办公区 - 实用经验教程分享!

    Sub Getfiles_All_Name()Du0办公区 - 实用经验教程分享!

    Dim x1, x2, x3, x4, x5, arrDu0办公区 - 实用经验教程分享!

    On Error Resume Next '忽略运行过程中可能出现的错误Du0办公区 - 实用经验教程分享!

    Application.ScreenUpdating = False '关闭显示更新,提高运行速度Du0办公区 - 实用经验教程分享!

    x1 = 2 '从第2行开始Du0办公区 - 实用经验教程分享!

    Set mysheet1 = ThisWorkbook.Worksheets("Sheet1") '定义Sheet1Du0办公区 - 实用经验教程分享!

    Set fs = CreateObject("Scripting.FileSystemObject") '访问计算机文件Du0办公区 - 实用经验教程分享!

    mysheet1.Cells(x1, 1) = "D:\ABCD" '查找该文件夹《ABCD》下面所有的文件Du0办公区 - 实用经验教程分享!

    Du0办公区 - 实用经验教程分享!

    Du0办公区 - 实用经验教程分享!

    For x2 = 2 To 1000000 '预计的文件夹数量Du0办公区 - 实用经验教程分享!

    If mysheet1.Cells(x2, 1) > "" ThenDu0办公区 - 实用经验教程分享!

    Set fo = fs.getfolder(mysheet1.Cells(x2, 1)) '该路径下的文件夹Du0办公区 - 实用经验教程分享!

    For Each fd In fo.subfolders '获取该文件夹下面所有的子文件夹Du0办公区 - 实用经验教程分享!

    x1 = x1 1Du0办公区 - 实用经验教程分享!

    arr = Array(fd.Path, fd.Name, fd.Type, fd.DateCreated, fd.DateLastModified, fd.Size)Du0办公区 - 实用经验教程分享!

    '获取文件路径、名称、类型、创建时间、最后修改时间、大小Du0办公区 - 实用经验教程分享!

    For x5 = 0 To 5Du0办公区 - 实用经验教程分享!

    mysheet1.Cells(x1, x5 1) = arr(x5) '逐一写入单元格Du0办公区 - 实用经验教程分享!

    NextDu0办公区 - 实用经验教程分享!

    NextDu0办公区 - 实用经验教程分享!

    ElseDu0办公区 - 实用经验教程分享!

    Exit For '退出For循环Du0办公区 - 实用经验教程分享!

    End IfDu0办公区 - 实用经验教程分享!

    NextDu0办公区 - 实用经验教程分享!

    x4 = x1Du0办公区 - 实用经验教程分享!

    For x3 = 2 To x4Du0办公区 - 实用经验教程分享!

    Set fo = fs.getfolder(mysheet1.Cells(x3, 1))Du0办公区 - 实用经验教程分享!

    Set fi = fo.FilesDu0办公区 - 实用经验教程分享!

    For Each fe In fi '获取该文件夹下面所有的子文件Du0办公区 - 实用经验教程分享!

    x1 = x1 1Du0办公区 - 实用经验教程分享!

    arr = Array(fe.Path, fe.Name, fe.Type, fe.DateCreated, fe.DateLastModified, fe.Size)Du0办公区 - 实用经验教程分享!

    For x5 = 0 To 5Du0办公区 - 实用经验教程分享!

    mysheet1.Cells(x1, x5 1) = arr(x5)Du0办公区 - 实用经验教程分享!

    NextDu0办公区 - 实用经验教程分享!

    NextDu0办公区 - 实用经验教程分享!

    NextDu0办公区 - 实用经验教程分享!

    Application.ScreenUpdating = True '恢复显示更新Du0办公区 - 实用经验教程分享!

    Du0办公区 - 实用经验教程分享!

    Du0办公区 - 实用经验教程分享!

    End SubDu0办公区 - 实用经验教程分享!

    通过VBA提取文件夹下边所有文件信息Du0办公区 - 实用经验教程分享!

  • 4

    检查无误后,在功能区里面点击“运行”图标运行程序。(或者按下【F5】键运行程序)Du0办公区 - 实用经验教程分享!

    通过VBA提取文件夹下边所有文件信息Du0办公区 - 实用经验教程分享!

  • 5

    稍等片刻,将会在Excel工作表上面看到要提取的相关信息。(主要与文件夹下面的文件数量有关)Du0办公区 - 实用经验教程分享!

    通过VBA提取文件夹下边所有文件信息Du0办公区 - 实用经验教程分享!

  • 5此文章非法爬取自百度经验
  • 知识要点分享

  • 1

    (1)“For Each……In……Next”虽然可以通过subfolders获取子文件夹信息,但子文件夹里面的文件夹及相关信息又无法获取。Du0办公区 - 实用经验教程分享!

    (2)既然不能通过“For Each……In……Next”提取所有信息,可以先提取文件夹的相关信息,再通过文件夹信息提取内部信息。Du0办公区 - 实用经验教程分享!

    (3)结合“For……To……Next”使用数组函数Array可以简化一些程序。Du0办公区 - 实用经验教程分享!

    通过VBA提取文件夹下边所有文件信息Du0办公区 - 实用经验教程分享!

  • 注意事项

    • 操作界面及功能可能因操作系统、软件版本不同而存在差异。
    • 个人经验,仅供参考。
    使用VBA提取文件夹里面的信息提取码:6k10复制并下载

    以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!Du0办公区 - 实用经验教程分享!


    标签: VBAexcel文件通过提取

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号统计代码