如何选取一个指定文件夹下的文件

klj123 2008-12-14 10:36:06
如何自动选取一个指定文件夹下的文件所有文件并将文件名显示在 ListBox上?请高手赐教!
...全文
166 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
smszw3370 2008-12-14
  • 打赏
  • 举报
回复
这个是取得一个夹下的所有文件:
Function AutoListFiles(ByVal sDirName As String, ByVal FileFilter As String) As String
On Error GoTo RF_ERROR
'sDirName是文件夹,可以是上个函数用split拆分后的每个夹,你可以用个数组将二者结合起来用,忘记说了,上个函数是取得所有文件夹的串,以vbNullChar为分隔符,出错的地方可以暂时注释掉
'FileFilter 是文件类型,如"*.JPG"
Dim sFile As String
Dim sDirNameTmp As String

sDirNameTmp = AddOrDeleRightCode(sDirName, True, "\")'这个就是保证sDirName以"\"结尾,你可以自己写AddOrDeleRightCode
sFile = Dir(sDirNameTmp & FileFilter, vbNormal + vbArchive + vbHidden)

Do While Len(sFile) > 0
sFile = UCase(Trim(sFile))
AutoListFiles = AutoListFiles & vbNullChar & sFile
sFile = Dir
Loop

If AutoListFiles <> "" Then AutoListFiles = Right(AutoListFiles, Len(AutoListFiles) - Len(vbNullChar))

RF_EXIT:
Exit Function
RF_ERROR:
MsgBox "错误号:" & Err.Number & vbCrLf & Err.Description, vbInformation
Resume RF_EXIT
End Function

smszw3370 2008-12-14
  • 打赏
  • 举报
回复
如果要包括子夹,则需要递归,先给你个通用函数,是取得一个夹下的所有子夹的,不过需要你稍微修改一下:

Function GetAllFolder(ByVal strFolderStart As String) As String
On Error GoTo ErrHandler

Static booRunNing As Boolean

Dim colAllDirs As New Collection
Dim lngNextDir As Long
Dim lngI As Long
Dim strDirName As String
Dim strDirStar As String
Dim strSubDir As String
Dim cur As New CWaitCursor

If booRunNing Then
Exit Function
Else
booRunNing = True
cur.ShowCursor "检查文件夹...", vbHourglass

lngNextDir = 1
strDirStar = AddOrDeleRightCode(strFolderStart, False, "\")

'开始
colAllDirs.Add strDirStar

Do While lngNextDir <= colAllDirs.Count
'获得下一个子目录
strDirName = colAllDirs(lngNextDir)
lngNextDir = lngNextDir + 1

'从 strDirName 读路径
strSubDir = Dir(strDirName & "\*", vbDirectory)

Do While strSubDir <> ""
' 添加路径名称到列表
If UCase(strSubDir) <> "PAGEFILE.SYS" And strSubDir <> "." And strSubDir <> ".." Then
strSubDir = strDirName & "\" & strSubDir
'它是一个路径
If (GetAttr(strSubDir) And vbDirectory) = vbDirectory Then colAllDirs.Add strSubDir
End If
strSubDir = Dir(, vbDirectory)
DoEvents
Loop

DoEvents
If Not booRunNing Then Exit Do
Loop

GetAllFolder = "" '因递归调用,故此句不能省略

For lngI = 1 To colAllDirs.Count
GetAllFolder = GetAllFolder & colAllDirs(lngI) & vbNullChar
Next lngI

booRunNing = False
End If

If GetAllFolder <> "" Then GetAllFolder = Left(GetAllFolder, Len(GetAllFolder) - Len(vbNullChar))

exi:
Exit Function
ErrHandler:
MsgBox "错误号:" & Err.Number & vbCrLf & Err.Description, vbInformation
End Function

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧