大众计算机学习网欢迎诸位!收藏本站注 册登 陆
常用教程:基础知识网络知识操作系统WPS网页制作数据库算法网页成功之路网络安全最新技术古典mid流行midmid背景下载中心
您现在的位置:首页 > 教程 > 文章页

Excel2007及以上版本扫描当前目录及子目录的所有文件

Admin | 2017-7-21 10:04:13 | ReadNums | 292 | 标签 Excel教程 | 打印本页
     

  代码使用方法:将如下代码放到当前目录的一个工作薄的按钮控件中。

  请注意哦,代码只能在EXCEL2007或以上版本才能使用,EXCEL2003无法使用。

  首先,申明一个公有变量:

  Public abc As Integer

  接着,功能代码如下:

  Function ListAllFso(myPath As String) '用FSO方法遍历并列出所有文件和文件夹名的【递归过程】
    Dim fld As Object
    Dim f As Object
    Dim fd As Object
    Dim k
    Set fld = CreateObject("Scripting.FileSystemObject").GetFolder(myPath)
    '用FSO方法得到当前路径的文件夹对象实例 注意这里的【当前路径myPath是个递归变量】

    For Each f In fld.Files  '遍历当前文件夹内所有【文件.Files】
        'MsgBox f '在A列逐个列出文件名
        If (InStr(f, "附件14") > 0) Then  'f 代表文件路径及文件名称,f.name代表文件路径(包括\),f代表文件名称(包括拓展名)
          abc = abc + 1
          Sheets("Sheet1").Cells(abc, 1).Value = f
          FileCopy f, "f:\123\" & Int(Rnd * 50000) & f.Name
        End If
    Next

    For Each fd In fld.SubFolders  '遍历当前文件夹内所有【子文件夹.SubFolders】
        'MsgBox " " & fd.Name & ""  'fd.Name为子文件夹的名称
        Call ListAllFso(fd.Path)       '注意此时的路径变量已经改变为【子文件夹的路径fd.Path】
        '注意重点在这里: 继续向下调用递归过程【遍历子文件夹内所有文件文件夹对象】
    Next
End Function

  最后,调用方法:

  Call ListAllFso(ThisWorkbook.Path)


问题未解决:在线咨询我要在线咨询问题

网友评论

(访客)
内容实用原创,讲得很好。
20xx年x月x日
(站长)
有问题请在线咨询。
20xx年x月x日