我有读取所有该目录下所有文件及子目录文件的代码。Private Function ListDirs(ByVal path As String, ByRef Dirs() As String, Recursive As Boolean, Optional Dircount As Long = 0) As Boolean Dim Dirname As String Dim Dirstart As Long Dim a As Long
' On Error GoTo ErrorHandler
Dirstart = Dircount + 1 If (Dircount = 0) Then ReDim Dirs(0) path = IIf(Right$(path, 1) = "\", path, path + "\") End If
Dirname = Dir$(path + "*.*", vbDirectory) Do While (Dirname <> "") If (Dirname <> ".") And (Dirname <> "..") And ((GetAttr(path + Dirname) And vbDirectory) = vbDirectory) Then Dircount = Dircount + 1 ReDim Preserve Dirs(Dircount) Dirs(Dircount) = path & Dirname & "\" 'add to listbox 'list1.additem Dirs(Dircount) End If Dirname = Dir Loop
If Recursive Then For a = Dirstart To Dircount If Not ListDirs(Dirs(a), Dirs, Recursive, Dircount) Then ListDirs = False Exit Function End If Next End If ListDirs = True Exit Function
ErrorHandler: 'Any error message(s) can be placed here ListDirs = False
End Function
调用代码:Dim vDir() As String, vDirCount As Long Call ListDirs(myDir, vDir, True, vDirCount)--myDir是你要找的目录,返回所有的文件/子目录到一个数组,True表示搜索是包含子目录(false相反),vDirCount表示返回的文件/子目录总数
引用“Microsoft scripting runtime” 然后 Dim FSO As New FileSystemObject Dim F As FILE For Each F In FSO.GetFolder("C:\temp").Files Debug.Print F.Name Next F举个例子,其他自己去完成吧
Dim Dirstart As Long
Dim a As Long
' On Error GoTo ErrorHandler
Dirstart = Dircount + 1
If (Dircount = 0) Then
ReDim Dirs(0)
path = IIf(Right$(path, 1) = "\", path, path + "\")
End If
Dirname = Dir$(path + "*.*", vbDirectory)
Do While (Dirname <> "")
If (Dirname <> ".") And (Dirname <> "..") And ((GetAttr(path + Dirname) And vbDirectory) = vbDirectory) Then
Dircount = Dircount + 1
ReDim Preserve Dirs(Dircount)
Dirs(Dircount) = path & Dirname & "\"
'add to listbox
'list1.additem Dirs(Dircount)
End If
Dirname = Dir
Loop
If Recursive Then
For a = Dirstart To Dircount
If Not ListDirs(Dirs(a), Dirs, Recursive, Dircount) Then
ListDirs = False
Exit Function
End If
Next
End If
ListDirs = True
Exit Function
ErrorHandler:
'Any error message(s) can be placed here
ListDirs = False
End Function
Call ListDirs(myDir, vDir, True, vDirCount)--myDir是你要找的目录,返回所有的文件/子目录到一个数组,True表示搜索是包含子目录(false相反),vDirCount表示返回的文件/子目录总数
然后
Dim FSO As New FileSystemObject
Dim F As FILE
For Each F In FSO.GetFolder("C:\temp").Files
Debug.Print F.Name
Next F举个例子,其他自己去完成吧