ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享] 跟我学 【喜迎2015立春】遍历文件夹(含子文件夹)方法 ABC

    [复制链接]

TA的精华主题

TA的得分主题

发表于 2015-4-16 22:52 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖已被收录到知识树中,索引项:文件操作和FSO
好东西!谢谢香川整理!

TA的精华主题

TA的得分主题

发表于 2015-4-24 17:05 | 显示全部楼层
  1. Enum aSearchType
  2.     aSearchTypeFolder = 0
  3.     aSearchTypeFile = 1
  4.     aSearchTypeAll = 2
  5. End Enum

  6. Function mySearch(aPath$, Optional searchTraversal As Boolean = True, Optional searchType As aSearchType = aSearchTypeFile) As String()
  7. '参数1:遍历目录全路径
  8. '参数2:是否搜索子目录
  9. '参数3:搜索文件、目录或者全部
  10. Dim aNum&, cmdStr$, folder$, aTemp$
  11. folder = """" & aPath & """"
  12. cmdStr = Environ$("comspec") & " /c dir " & folder   '初始化字串
  13. If searchTraversal Then cmdStr = cmdStr & " /s"      '定义是否遍历
  14. aTemp = Mid(aPath, InStrRev(aPath, "") + 1)         '获取最后一个""后的内容
  15. If Left(aTemp, 2) = "*." Then searchType = aSearchTypeFile
  16. If searchType = aSearchTypeFile Then                 '定义搜索文件、目录还是全部
  17.     cmdStr = cmdStr & " /a:-d /b"
  18. ElseIf searchType = aSearchTypeFolder Then
  19.     cmdStr = cmdStr & " /a:d /b"
  20. ElseIf searchType = aSearchTypeAll Then
  21.     cmdStr = cmdStr & " /b"
  22. End If
  23. cmdStr = cmdStr & " > C:\aTemp.txt"
  24. With CreateObject("WScript.Shell")
  25.        .Run cmdStr, 0, True
  26. End With
  27. aNum = FreeFile
  28. Open "C:\aTemp.txt" For Input As #aNum
  29.     mySearch = Split(StrConv(InputB(LOF(aNum), aNum), vbUnicode), vbCrLf)
  30. Close #aNum
  31. End Function
复制代码

TA的精华主题

TA的得分主题

发表于 2015-4-24 17:07 | 显示全部楼层
香川群子 发表于 2015-2-4 12:52
最后,作为本帖的特色,介绍使用VBA语句直接调用Dos中Dir命令来搜寻文件名的方法:呵呵,Dos命令不仅简洁, ...

小弟整理了调用cmd的代码附上,调用相对简单吧

TA的精华主题

TA的得分主题

发表于 2015-4-25 13:44 | 显示全部楼层
刚开始学习VBA,暂时还没弄懂,先收藏

TA的精华主题

TA的得分主题

发表于 2015-4-30 10:20 | 显示全部楼层
香川群子 发表于 2015-2-4 12:52
最后,作为本帖的特色,介绍使用VBA语句直接调用Dos中Dir命令来搜寻文件名的方法:呵呵,Dos命令不仅简洁, ...

请教老师:
直接调用Dos中Dir命令来搜寻文件名,如何才能不搜索该文件夹所含子文件夹内的所有文件的含路径全名?谢谢!

TA的精华主题

TA的得分主题

发表于 2015-4-30 11:51 | 显示全部楼层
ak47ok 发表于 2015-4-30 10:20
请教老师:
直接调用Dos中Dir命令来搜寻文件名,如何才能不搜索该文件夹所含子文件夹内的所有文件的含路 ...

去除/s就可以,看132楼

TA的精华主题

TA的得分主题

发表于 2015-4-30 12:04 | 显示全部楼层
loquat 发表于 2015-4-30 11:51
去除/s就可以,看132楼

我一向用这个,可能速度慢点
My_Path = [b1] & "\"
Range("a:a") = ""
    MyFilename = Dir(My_Path & "*.xl*")
    Do While MyFilename <> ""
       Range("a" & [a65536].End(3).Row + 1) = MyFilename

        MyFilename = Dir
    Loop

TA的精华主题

TA的得分主题

发表于 2015-5-8 11:14 来自手机 | 显示全部楼层
很好的帖子,学习学习,每天进步

TA的精华主题

TA的得分主题

发表于 2015-5-8 11:36 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2015-5-8 23:11 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-15 07:47 , Processed in 0.033661 second(s), 5 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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