全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 Excel
3386 7
2011-08-30
悬赏 5 个论坛币 已解决
就是在一个大文件夹下,搜索出包含某关键字的所有文件和文件夹。我自己用的.filesearch,.SearchFolders = True。但是这样只能把所有包含关键字的单个文件找出来,不能找出包含关键字的子文件夹。求高手指教应该怎么办。
这个大文件夹下面是有很多层子文件夹、文件的,用dir函数循环的话,路径怎么变化也是个问题,只好求助了。

最佳答案

agstick 查看完整内容

在立即窗口中查看结果,搜索结果包括文件及文件夹,要复制的话,文件夹里的文件会重复复制,不明白你的意思 Sub test() FindFile "c:\abc\", "*目标*" End Sub Sub FindFile(mPath As String, Optional sFile As String = "") On Error Resume Next Dim s As String, sDir() As String Dim i As Long, d As Long If Right(mPath, 1) "\" Then mPath = mPath & "\" End If '查找目录下的文件 s = Dir(mPat ...
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2011-8-30 11:18:22
在立即窗口中查看结果,搜索结果包括文件及文件夹,要复制的话,文件夹里的文件会重复复制,不明白你的意思
Sub test()
    FindFile "c:\abc\", "*目标*"
End Sub

Sub FindFile(mPath As String, Optional sFile As String = "")
On Error Resume Next
Dim s As String, sDir() As String
Dim i As Long, d As Long

If Right(mPath, 1) <> "\" Then
    mPath = mPath & "\"
End If
'查找目录下的文件
s = Dir(mPath & sFile, vbArchive + vbDirectory + vbHidden + vbNormal + vbReadOnly + vbSystem)
Do While s <> ""
   Debug.Print mPath & s
   s = Dir
Loop
'查找目录下的子目录
s = Dir(mPath, vbArchive + vbDirectory + vbHidden + vbNormal + vbReadOnly + vbSystem)
Do While s <> ""
    If s <> "." And s <> ".." Then
        If (GetAttr(mPath & s) And vbDirectory) = vbDirectory Then
        d = d + 1
        ReDim Preserve sDir(d)
        sDir(d) = mPath & s
        End If
    End If
    s = Dir
Loop

'开始递归
For i = 1 To d
    FindFile sDir(i) & "\", sFile
Next

End Sub
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-8-30 11:26:50
论坛币干嘛的
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-8-30 12:24:20
balance2050 发表于 2011-8-30 11:26
论坛币干嘛的
不知道,应该有用,我倾尽所有求助了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-8-30 14:21:09
以下过程利用递归可以查找目录和子目录下的所有文件
Public Sub FindFile(mPath As String, Optional sFile As String = "")
On Error Resume Next
Dim s As String, sDir() As String
Dim i As Long, d As Long

If Right(mPath, 1) <> "\" Then
    mPath = mPath & "\"
End If
'查找目录下的文件
s = dir(mPath & sFile, vbArchive + vbDirectory + vbHidden + vbNormal + vbReadOnly + vbSystem)
Do While s <> ""
   Debug.Print mPath & s
   s = dir
Loop
'查找目录下的子目录
s = dir(mPath, vbArchive + vbDirectory + vbHidden + vbNormal + vbReadOnly + vbSystem)
Do While s <> ""
    If s <> "." And s <> ".." Then
        If (GetAttr(mPath & s) And vbDirectory) = vbDirectory Then
        d = d + 1
        ReDim Preserve sDir(d)
        sDir(d) = mPath & s
        End If
    End If
    s = dir
Loop

'开始递归        
For i = 1 To d
    FindFile sDir(d) & "\"
Next

End Sub
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-8-30 15:34:03
agstick 发表于 2011-8-30 14:21
以下过程利用递归可以查找目录和子目录下的所有文件
Public Sub FindFile(mPath As String, Optional sFil ...
我研究一下,比如我要在c:\abc\下查找所有含有“目标”的文件和文件夹,找出后在c:\下建立一名为“目标”的文件夹,并把搜索结果都复制到里面,应该怎么弄?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群