excel vba如何搜索某目录里的子目录名称是否包含某关键字?并返回搜到的个数?

火仔 2012-05-16 01:45:40
不是搜文件的名称,是搜目录的名称。


例如C:\TEST\里面有5个folder:
QWE
ASD_1
ASD_2
ASD_3
TYU

并且,C:\TEST\ASD_1\里含有一个ASD.TXT文件

然后我要的结果是:我搜索关键字“ASD”,返回的结果为3(搜到3个folder name包含“ASD”的目录,但不搜里面的文件)
...全文
356 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ZenRoi 2012-05-24
  • 打赏
  • 举报
回复
多层尝试搜索可以使用函数递归的方法来解决:

Public Fso As Object
Public Str As String

Sub getFldList()
Set Fso = CreateObject("Scripting.FileSystemObject")
Fldnm ("C:\TEST")
MsgBox Str
End Sub

Function Fldnm(pth$)
Dim Fld

For Each Fld In Fso.getfolder(pth).subfolders
If Fld.Name Like "*ASD*" Then Str = Str & Fld.Name & " "
Fldnm (Fld)
Next
End Function
火仔 2012-05-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

VB code
Str = ""
Set Fso = CreateObject("Scripting.FileSystemObject")
For Each Fld In Fso.GetFolder("C:\TEST").SubFolders
If Fld.Name Like "*ASD*" Then Str = Str & Fld.Name & " "
Next

M……
[/Quote]



这段代码貌似只能得到一层的subfolder,再深一层就搜索不到了。。。如何能搜到最深处?
dsd999 2012-05-17
  • 打赏
  • 举报
回复
1楼代码正确。
ZenRoi 2012-05-16
  • 打赏
  • 举报
回复
Str = ""
Set Fso = CreateObject("Scripting.FileSystemObject")
For Each Fld In Fso.GetFolder("C:\TEST").SubFolders
If Fld.Name Like "*ASD*" Then Str = Str & Fld.Name & " "
Next

MsgBox Str

5,139

社区成员

发帖
与我相关
我的任务
社区描述
其他开发语言 Office开发/ VBA
社区管理员
  • Office开发/ VBA社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧