aaa
aaa\bbb
aaa\bbb\ccc
aaa\bbb\ccc\ddd
aaa\bbb\ccc\ddd\eee
aaa\bbb\ccc\ddd\eee\fff
比如上面的目录结果,如果指定aaa,如何遍历aaa下面所有的子目录。一直到fff这个级别。
将子目录做成列表或者集合。
aaa\bbb
aaa\bbb\ccc
aaa\bbb\ccc\ddd
aaa\bbb\ccc\ddd\eee
aaa\bbb\ccc\ddd\eee\fff
比如上面的目录结果,如果指定aaa,如何遍历aaa下面所有的子目录。一直到fff这个级别。
将子目录做成列表或者集合。
Dim i&, fs, f, sPrivate Sub Command1_Click()
s = GetFolders("e:\music")
If TFolders <= 0 Then MsgBox "无子文件夹": Exit Sub
Me.Cls
For i = 0 To UBound(s)
Print s(i)
Next i
MsgBox "总共有: " & CStr(TFolders) & " 个子文件夹"
End SubPublic Function GetFolders(Selpath$) As String()
Set fs = CreateObject("Scripting.FileSystemObject")
Selpath = IIf(Right(Selpath, 1) = "\", Mid(Selpath, 1, Len(Selpath) - 1), Selpath)
Set f = fs.GetFolder(Selpath)
ReDim Preserve strrec$(0)
strrec(0) = Selpath
TFolders = 0
GetSubFolder f, 0
GetFolders = strrec()
End FunctionPrivate Sub GetSubFolder(f, n)
Dim sf, f1
Set sf = f.SubFolders
If Not sf Is Nothing Then
For Each f1 In sf
GetSubFolder f1, n + 4
TFolders = TFolders + 1
ReDim Preserve strrec$(TFolders - 1)
strrec(TFolders - 1) = f1
DoEvents
Next
End If
End Sub
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/cbm666/archive/2008/03/08/2158251.aspx
刚才试了一下。除了Me.Cls提示错误外。结果没有问题。但是代码好像太高级了,有点复杂,看的晕晕的。大家有没有更简单点的方法?thank you
那些变量必须定义全局?为什么GetSubFolder里面的递归调用是GetSubFolder f1, n + 4?
这个代码不是我写的,来自刘老师的博客,上面已经注明了
能看出有VB5的痕迹
我写的话不会是这样,我都是引用,他是用CreateObject