aaa
aaa\bbb
aaa\bbb\ccc
aaa\bbb\ccc\ddd
aaa\bbb\ccc\ddd\eee
aaa\bbb\ccc\ddd\eee\fff
比如上面的目录结果,如果指定aaa,如何遍历aaa下面所有的子目录。一直到fff这个级别。
将子目录做成列表或者集合。

解决方案 »

  1.   

    Dim strrec$(), TFolders&
    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
      

  2.   

    谢谢!dbcontrols
    刚才试了一下。除了Me.Cls提示错误外。结果没有问题。但是代码好像太高级了,有点复杂,看的晕晕的。大家有没有更简单点的方法?thank you
      

  3.   

    注释不是很详细。
    那些变量必须定义全局?为什么GetSubFolder里面的递归调用是GetSubFolder f1, n + 4?
      

  4.   

    会用就行啊
    这个代码不是我写的,来自刘老师的博客,上面已经注明了
    能看出有VB5的痕迹
    我写的话不会是这样,我都是引用,他是用CreateObject