刚开始时一直使用第一种,然后每次使用打开指定的目录就会鼠标一直转,纠结。后来发现第二种,瞬间清爽。
第一种:判断目录较多,效率慢
'遍历某文件夹及子文件夹中的所有文件
Sub SoSuoFile(MyPath As String)
Dim Myname As String
Dim a As String
Dim B() As String
Dim dir_i() As String
Dim I, idir As Long
If Right(MyPath, 1) <> "\" Then MyPath = MyPath + "\"
Myname = Dir(MyPath, vbDirectory or vbHidden or vbNormal or vbReadOnly)
Do While Myname <> ""
If Myname <> "." And Myname <> ".." Then
If (GetAttr(MyPath & Myname) And vbDirectory) = vbDirectory Then '如果找到的是目录
idir = idir + 1
ReDim Preserve dir_i(idir) As String
dir_i(idir - 1) = Myname
Else
Forms!F_PPAP_附件.List3.AddItem Myname '把找到的文件显示到列表框中
End If
End If
Myname = Dir '搜索下一项
Loop
For I = 0 To idir - 1
Call SoSuoFile(MyPath + dir_i(I))
Next I
ReDim dir_i(0) As String
End Sub
第二种:
Dim s As String
s = Dir(folderProject & "\", vbDirectory + vbNormal + vbReadOnly)
Do While s <> ""
If s <> "." And s <> ".." Then ''.'和'..',表示当前目录和上层目录
' Debug.Print "000----"; s
Me.List3.AddItem s
End If
s = Dir
Loop