Public Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long根据文件名查找文件返回 Long,如执行成功,返回一个搜索句柄。如果出错,返回一个INVALID_HANDLE_VALUE常数,一旦不再需要,应该用FindClose函数关闭这个句柄 参数 lpFileName ----- String,欲搜索的文件名。可包含通配符,并可包含一个路径或相对路径名 lpFindFileData - WIN32_FIND_DATA,这个结构用于装载与找到的文件有关的信息。该结构可用于后续的搜索由这个函数返回的句柄可以作为一个参数用于FindNextFile函数。这样一来,就可以方便的枚举出与lpFileName参数指定的文件名相符的所有文件Public Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long根据调用FindFirstFile函数时指定的一个文件名查找下一个文件 返回 Long,非零表示成功,零表示失败。如不再有与指定条件相符的文件,会将GetLastError设置成ERROR_NO_MORE_FILES 参数 hFindFile ------ Long,由FindFirstFile函数返回的搜索句柄 lpFindFileData - WIN32_FIND_DATA,这个结构用于装载与找到的文件有关的信息
sorry,搞错了,这个是搜索文件, 但是好像没有枚举文件的API~
加入集合似乎更合理! 简单的用Dir就可以。 我不喜欢直接给源码,会封堵你的思路的。
'模 块 名:GetFileList '功 能:返回指定文件夹的所有文件名列表 '返 回 值:成功/失败:True/False '参 数:GetFileList(指定文件夹路径, 文件数组,返回的文件类型) '引 用:无 '外部函数:无 '内部变量:[fName=文件名][i=用于循环] '调用方法: '++++++++++++++++++++++++++++++++++++ ' Dim FileName() As String, i As Long ' GetFileList "c:\", FileName ' For i = 0 To UBound(FileName) ' Debug.Print FileName(i) ' Next i '++++++++++++++++++++++++++++++++++++ Function GetFileList(ByVal Path As String, ByRef Filename() As String, Optional fExp As String = "*.*") As Boolean Dim fName As String, i As Long If right$(Path, 1) <> "\" Then Path = Path & "\" fName = Dir$(Path & fExp) i = 0 Do While fName <> "" ReDim Preserve Filename(i) As String Filename(i) = fName fName = Dir$ i = i + 1 Loop If i <> 0 Then ReDim Preserve Filename(i - 1) As String GetFileList = True Else GetFileList = False End If End Function
'模 块 名:GetFolderList '功 能:返回指定文件夹的所有文件夹列表 '返 回 值:成功/失败:True/False '参 数:GetFileList(指定文件夹路径, 文件夹数组) '引 用:无 '外部函数:无 '内部变量:[SearchDir=路径][FoundDir=文件夹名][i=用于循环] '调用方法: '++++++++++++++++++++++++++++++++++++ ' Dim FolderName() As String, i As Long ' GetFolderList "C:\", FolderName ' For i = LBound(FolderName) To UBound(FolderName) ' Debug.Print FolderName(i) ' Next i '++++++++++++++++++++++++++++++++++++ Public Function GetFolderList(ByVal Path As String, ByRef FolderName() As String) As Boolean Dim SearchDir As String Dim FoundDir As String Dim i As Long If right(Path, 1) <> "\" Then Path = Path & "\" SearchDir = Path & "*." FoundDir = Dir(SearchDir, vbDirectory) While FoundDir <> "" If Not FoundDir = "." Or FoundDir = ".." Then ReDim Preserve FolderName(i) As String FolderName(i) = FoundDir End If FoundDir = Dir() i = i + 1 Wend End Function
Long,如执行成功,返回一个搜索句柄。如果出错,返回一个INVALID_HANDLE_VALUE常数,一旦不再需要,应该用FindClose函数关闭这个句柄
参数
lpFileName ----- String,欲搜索的文件名。可包含通配符,并可包含一个路径或相对路径名
lpFindFileData - WIN32_FIND_DATA,这个结构用于装载与找到的文件有关的信息。该结构可用于后续的搜索由这个函数返回的句柄可以作为一个参数用于FindNextFile函数。这样一来,就可以方便的枚举出与lpFileName参数指定的文件名相符的所有文件Public Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long根据调用FindFirstFile函数时指定的一个文件名查找下一个文件
返回
Long,非零表示成功,零表示失败。如不再有与指定条件相符的文件,会将GetLastError设置成ERROR_NO_MORE_FILES
参数
hFindFile ------ Long,由FindFirstFile函数返回的搜索句柄
lpFindFileData - WIN32_FIND_DATA,这个结构用于装载与找到的文件有关的信息
但是好像没有枚举文件的API~
简单的用Dir就可以。
我不喜欢直接给源码,会封堵你的思路的。
'功 能:返回指定文件夹的所有文件名列表
'返 回 值:成功/失败:True/False
'参 数:GetFileList(指定文件夹路径, 文件数组,返回的文件类型)
'引 用:无
'外部函数:无
'内部变量:[fName=文件名][i=用于循环]
'调用方法:
'++++++++++++++++++++++++++++++++++++
' Dim FileName() As String, i As Long
' GetFileList "c:\", FileName
' For i = 0 To UBound(FileName)
' Debug.Print FileName(i)
' Next i
'++++++++++++++++++++++++++++++++++++
Function GetFileList(ByVal Path As String, ByRef Filename() As String, Optional fExp As String = "*.*") As Boolean
Dim fName As String, i As Long
If right$(Path, 1) <> "\" Then Path = Path & "\"
fName = Dir$(Path & fExp)
i = 0
Do While fName <> ""
ReDim Preserve Filename(i) As String
Filename(i) = fName
fName = Dir$
i = i + 1
Loop
If i <> 0 Then
ReDim Preserve Filename(i - 1) As String
GetFileList = True
Else
GetFileList = False
End If
End Function
'功 能:返回指定文件夹的所有文件夹列表
'返 回 值:成功/失败:True/False
'参 数:GetFileList(指定文件夹路径, 文件夹数组)
'引 用:无
'外部函数:无
'内部变量:[SearchDir=路径][FoundDir=文件夹名][i=用于循环]
'调用方法:
'++++++++++++++++++++++++++++++++++++
' Dim FolderName() As String, i As Long
' GetFolderList "C:\", FolderName
' For i = LBound(FolderName) To UBound(FolderName)
' Debug.Print FolderName(i)
' Next i
'++++++++++++++++++++++++++++++++++++
Public Function GetFolderList(ByVal Path As String, ByRef FolderName() As String) As Boolean
Dim SearchDir As String
Dim FoundDir As String
Dim i As Long
If right(Path, 1) <> "\" Then Path = Path & "\"
SearchDir = Path & "*."
FoundDir = Dir(SearchDir, vbDirectory)
While FoundDir <> ""
If Not FoundDir = "." Or FoundDir = ".." Then
ReDim Preserve FolderName(i) As String
FolderName(i) = FoundDir
End If
FoundDir = Dir()
i = i + 1
Wend
End Function
楼主说要API~
可以不用API~
谢谢!