Public Function getFiles(addsheet As Worksheet) As Integer Dim x As Object Dim f Dim fs Dim i Dim SrcFile
Set x = CreateObject("Scripting.FileSystemObject") Set f = x.GetFolder("C:\savepath") Set fs = f.Files i = 1 For Each SrcFile In fs 'Debug.Print SrcFile.Name addsheet.Cells(1, i) = SrcFile.Name i = i + 1 Next
Set fs = Nothing Set f = Nothing Set x = Nothing End Function
上面的代码获得目录吓所有的文件并在传递过来的worksheet中列出来,使用范例:Private Sub Worksheet_Activate() getFiles ActiveSheet End Sub
用Dir函数即可: Sub ListTheFilesName(strPath As String) Dim strFileName As String Dim i As Integer
strFileName = Dir(strPath) i = 1 Do While strFileName <> "" Sheet1.Cells(i, 1) = strFileName i = i + 1 strFileName = Dir Loop
End Sub
用Dir函数即可: Sub ListTheFilesName(strPath As String) Dim strFileName As String Dim i As Integer
strFileName = Dir(strPath) i = 1 Do While strFileName <> "" Sheet1.Cells(i, 1) = strFileName i = i + 1 strFileName = Dir Loop
如何实现遍历文件夹中的所有文件-------------------------------------------------------------------------------- 把下面放到模块中 Option Explicit Public Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" _ (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long Public Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" _ (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long Public Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long Public Const MAX_PATH = 260 Public Const FILE_ATTRIBUTE_ARCHIVE = &H20 Public Const FILE_ATTRIBUTE_COMPRESSED = &H800 Public Const FILE_ATTRIBUTE_DIRECTORY = &H10 Public Const FILE_ATTRIBUTE_HIDDEN = &H2 Public Const FILE_ATTRIBUTE_NORMAL = &H80 Public Const FILE_ATTRIBUTE_READONLY = &H1 Public Const FILE_ATTRIBUTE_SYSTEM = &H4 Public Const FILE_ATTRIBUTE_TEMPORARY = &H100'自定义数据类型FILETIME和WIN32_FIND_DATA的定义 Public Type FILETIME dwLowDateTime As Long dwHighDateTime As Long End TypePublic Type WIN32_FIND_DATA dwFileAttributes As Long ftCreationTime As FILETIME ftLastAccessTime As FILETIME ftLastWriteTime As FILETIME nFileSizeHigh As Long nFileSizeLow As Long dwReserved0 As Long dwReserved1 As Long cFileName As String * MAX_PATH cAlternate As String * 14 End Type ---------------------- '-------------------------------------------------------------------------------- ' 把当前文件夹路径下的所有文件入到listview中 '-------------------------------------------------------------------------------- Private Sub finfiles(tCurrentdir As String) Dim itmX As ListItem Dim tFindData As WIN32_FIND_DATA Dim strFileName As String Dim lHandle As Long Dim CountFolder As Integer Dim CountFiles As Integer CountFolder = 0 CountFiles = 0 ListView1.ListItems.Clear lHandle = FindFirstFile(tCurrentdir & "\*.*", tFindData) If lHandle = 0 Then Set itmX = ListView1.ListItems.Add(, , strFileName & "找不到文件") Exit Sub End If strFileName = fDelInvaildChr(tFindData.cFileName) Do While True tFindData.cFileName = "" If FindNextFile(lHandle, tFindData) = 0 Then FindClose (lHandle) Exit Do Else strFileName = fDelInvaildChr(tFindData.cFileName) If tFindData.dwFileAttributes = &H10 Then If strFileName <> "." And strFileName <> "." Then Set itmX = ListView1.ListItems.Add(, , strFileName) itmX.SmallIcon = 1 CountFolder = CountFolder + 1 End If Else Debug.Print InStr(LCase(Right(strFileName, 3)), ExtendFileName) If InStr(ExtendFileName, LCase(Right(strFileName, 3))) > 0 Then Set itmX = ListView1.ListItems.Add(, , strFileName) itmX.SubItems(1) = CStr(FileLen(tCurrentdir & "\" & strFileName)) itmX.SmallIcon = 2 itmX.SubItems(2) = FileDateTime(tCurrentdir & "\" & strFileName) CountFiles = CountFiles + 1 End If End If End If Loop ListView1.Sorted = True ListView1.SortKey = 1 StatusBar1.Panels(2).Text = CurrentDir StatusBar1.Panels(3).Text = "文件夹:" & CountFolder & " 文件:" & CountFiles End Sub
Dim x As Object
Dim f
Dim fs
Dim i
Dim SrcFile
Set x = CreateObject("Scripting.FileSystemObject")
Set f = x.GetFolder("C:\savepath")
Set fs = f.Files
i = 1
For Each SrcFile In fs
'Debug.Print SrcFile.Name
addsheet.Cells(1, i) = SrcFile.Name
i = i + 1
Next
Set fs = Nothing
Set f = Nothing
Set x = Nothing
End Function
getFiles ActiveSheet
End Sub
Sub ListTheFilesName(strPath As String)
Dim strFileName As String
Dim i As Integer
strFileName = Dir(strPath)
i = 1
Do While strFileName <> ""
Sheet1.Cells(i, 1) = strFileName
i = i + 1
strFileName = Dir
Loop
End Sub
Sub ListTheFilesName(strPath As String)
Dim strFileName As String
Dim i As Integer
strFileName = Dir(strPath)
i = 1
Do While strFileName <> ""
Sheet1.Cells(i, 1) = strFileName
i = i + 1
strFileName = Dir
Loop
End Sub
2003-4-20 9:22:06〖摘自 access911.net 文章区〗
如何实现遍历文件夹中的所有文件--------------------------------------------------------------------------------
把下面放到模块中
Option Explicit
Public Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" _
(ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
Public Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" _
(ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
Public Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long
Public Const MAX_PATH = 260
Public Const FILE_ATTRIBUTE_ARCHIVE = &H20
Public Const FILE_ATTRIBUTE_COMPRESSED = &H800
Public Const FILE_ATTRIBUTE_DIRECTORY = &H10
Public Const FILE_ATTRIBUTE_HIDDEN = &H2
Public Const FILE_ATTRIBUTE_NORMAL = &H80
Public Const FILE_ATTRIBUTE_READONLY = &H1
Public Const FILE_ATTRIBUTE_SYSTEM = &H4
Public Const FILE_ATTRIBUTE_TEMPORARY = &H100'自定义数据类型FILETIME和WIN32_FIND_DATA的定义
Public Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End TypePublic Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type
----------------------
'--------------------------------------------------------------------------------
' 把当前文件夹路径下的所有文件入到listview中
'--------------------------------------------------------------------------------
Private Sub finfiles(tCurrentdir As String)
Dim itmX As ListItem
Dim tFindData As WIN32_FIND_DATA
Dim strFileName As String
Dim lHandle As Long
Dim CountFolder As Integer
Dim CountFiles As Integer
CountFolder = 0
CountFiles = 0
ListView1.ListItems.Clear
lHandle = FindFirstFile(tCurrentdir & "\*.*", tFindData)
If lHandle = 0 Then
Set itmX = ListView1.ListItems.Add(, , strFileName & "找不到文件")
Exit Sub
End If
strFileName = fDelInvaildChr(tFindData.cFileName)
Do While True
tFindData.cFileName = ""
If FindNextFile(lHandle, tFindData) = 0 Then
FindClose (lHandle)
Exit Do
Else
strFileName = fDelInvaildChr(tFindData.cFileName)
If tFindData.dwFileAttributes = &H10 Then
If strFileName <> "." And strFileName <> "." Then
Set itmX = ListView1.ListItems.Add(, , strFileName)
itmX.SmallIcon = 1
CountFolder = CountFolder + 1
End If
Else
Debug.Print InStr(LCase(Right(strFileName, 3)), ExtendFileName)
If InStr(ExtendFileName, LCase(Right(strFileName, 3))) > 0 Then
Set itmX = ListView1.ListItems.Add(, , strFileName)
itmX.SubItems(1) = CStr(FileLen(tCurrentdir & "\" & strFileName))
itmX.SmallIcon = 2
itmX.SubItems(2) = FileDateTime(tCurrentdir & "\" & strFileName)
CountFiles = CountFiles + 1
End If
End If
End If
Loop
ListView1.Sorted = True
ListView1.SortKey = 1
StatusBar1.Panels(2).Text = CurrentDir
StatusBar1.Panels(3).Text = "文件夹:" & CountFolder & " 文件:" & CountFiles
End Sub