帮你写了段代码,调用之前先清除ctrlList中的内容。Public Sub LoadFolderFile(ByVal strFolder As String, ctrlList As ListBox) Dim strFullFolder As String strFullFolder = strFolder If Right(strFullFolder, 1) <> "\" Then strFullFolder = strFullFolder & "\"
Dim strName As String, strFullName As String
' load all files first strName = Dir(strFullFolder, vbArchive + vbHidden + vbNormal + vbReadOnly + vbSystem) Do While Len(strName) <> 0 strFullName = strFullFolder & strName ctrlList.AddItem strFullName strName = Dir Loop
' store all sub-folder name in an array then strName = Dir(strFullFolder & "*.*", vbDirectory) Dim strSubFolder() As String, i As Long ReDim strSubFolder(1 To 10) As String Dim nTotalSubFolder As Long, nArraySize As Long nTotalSubFolder = 0 nArraySize = 10 Do While Len(strName) <> 0 If strName <> "." And strName <> ".." And _ (GetAttr(strFullFolder & strName) And vbDirectory) = vbDirectory Then nTotalSubFolder = nTotalSubFolder + 1 If nTotalSubFolder > nArraySize Then nArraySize = nArraySize + 10 ReDim Preserve strSubFolder(1 To nArraySize) As String End If strSubFolder(nTotalSubFolder) = strName End If strName = Dir Loop
' load files in each sub-folder For i = 1 To nTotalSubFolder LoadFolderFile strFullFolder + strSubFolder(i), ctrlList Next End Sub
1. VB 的 Dir 函数 2. API: FindFirstFile, ... 3. Windows Shell
strFullFolder = strFolder
If Right(strFullFolder, 1) <> "\" Then strFullFolder = strFullFolder & "\"
Dim strName As String, strFullName As String
' load all files first
strName = Dir(strFullFolder, vbArchive + vbHidden + vbNormal + vbReadOnly + vbSystem)
Do While Len(strName) <> 0
strFullName = strFullFolder & strName
ctrlList.AddItem strFullName
strName = Dir
Loop
' store all sub-folder name in an array then
strName = Dir(strFullFolder & "*.*", vbDirectory)
Dim strSubFolder() As String, i As Long
ReDim strSubFolder(1 To 10) As String
Dim nTotalSubFolder As Long, nArraySize As Long
nTotalSubFolder = 0
nArraySize = 10
Do While Len(strName) <> 0
If strName <> "." And strName <> ".." And _
(GetAttr(strFullFolder & strName) And vbDirectory) = vbDirectory Then
nTotalSubFolder = nTotalSubFolder + 1
If nTotalSubFolder > nArraySize Then
nArraySize = nArraySize + 10
ReDim Preserve strSubFolder(1 To nArraySize) As String
End If
strSubFolder(nTotalSubFolder) = strName
End If
strName = Dir
Loop
' load files in each sub-folder
For i = 1 To nTotalSubFolder
LoadFolderFile strFullFolder + strSubFolder(i), ctrlList
Next
End Sub
2. API: FindFirstFile, ...
3. Windows Shell