这是我常用的方法,希望能给你帮助
Private Sub Command1_Click()
Dim Paths() As String
Dim Files As String
Dim I As Long
Dim n As Long
ReDim Paths(0)
'初始化动态数组
Paths(0) = "D:\"
'要遍历的路径,建议用变量或控件找替
'指定开始搜索的路径
If Right(Paths(0), 1) <> "\" Then Paths(0) = Paths(0) & "\"
'判断是否根目录,如果不是后面要加 "\"
Do While I <= n
Files = Dir(Paths(I), vbDirectory)
'这里只能返回普通属性的文件和文件夹,如下写法可返回带隐藏属性的
Do While Files <> ""
'Files = Dir(Paths(I), vbDirectory Or vbHidden),以此类推,自己研究
DoEvents
'响应外部事件,避免假死
If Files <> "." And Files <> ".." Then
'判断当前目录与根目录
If (GetAttr(Paths(I) & Files) And vbDirectory) = vbDirectory Then
'判断返回的是不是文件夹
n = n + 1
ReDim Preserve Paths(n)
Paths(n) = Paths(I) & Files & "\"
'将得到的目录保存在数组中(完整路径)
List1.AddItem Files
'将得到文件夹添加到列表中,如果取全路径用 Paths(n)
Else
List2.AddItem Files
'这里返回的是文件,如果要指定的文件,在这里写判断语句就可以了,如下:
' If InStr(Files, ".txt") > 0 Then
'从返回的文件中查找指定的文件, Instr 函数如果不懂可在网上查下资料
'
List3.AddItem Files
' End If
End If
End If
Files = Dir
'递归,Dir的二次调用
Loop
I = I + 1
Loop
End Sub