【发布时间】:2019-05-11 20:00:08
【问题描述】:
我有一个函数可以搜索给定目录的子文件夹并找到我需要的文件名。但是,它只遍历一组子文件夹,找到第一个子文件夹,然后遍历子文件夹的末尾。但是,它然后就停止了。我浏览了各种线程并尝试了不同的选项,但没有任何乐趣。
我需要它然后循环回到根目录(例如,sPath=C:\Windows)并查看下一个子文件夹,遍历整个目录,返回根文件夹,依此类推,直到找到它需要的文件。我似乎无法让那部分工作,希望这里的人可以帮助指出我所缺少的。我试图将此设置保留在更高级别的根文件夹中,而不是必须从目录中的较低位置开始使其工作。这是函数:
Function recurse(sPath As String, strname As String, strName3 As String)
Dim FSO As New FileSystemObject
Dim myFolder As Scripting.Folder
Dim mySubFolder As Scripting.Folder
Dim myFile As Scripting.file
Dim strJDFile As String
Dim strDir As String
Dim strJDName As String
Set myFolder = FSO.GetFolder(sPath)
' strName = Range("a2").Offset(0, 3)
strName3 = Replace(strName3, "/", " ")
For Each mySubFolder In myFolder.SubFolders
Debug.Print " mySubFolder: " & mySubFolder
For Each myFile In mySubFolder.Files
If "*" & myFile.Name & "*" Like "*" & strName3 & "*" Then
strJDName = myFile.Name
strDir = mySubFolder & "\"
strJDFile = strDir & strJDName
recurse = strJDFile
Exit Function
Else
Debug.Print " myFile.name: " & myFile.Name
End If
Next
recurse = recurse(mySubFolder.Path, strname, strName3)
Next
End Function
【问题讨论】:
-
this 可能有用
标签: excel vba recursion subdirectory