用VBA获取文件夹中的文件列表
2010-03-13 22:03
441 查看
如果我们要在Excel中获取某个文件夹中所有的文件列表,可以通过下面的VBA代码来进行。代码运行后,首先弹出一个浏览文件夹对话框,然后新建一个工作簿,并在工作表的A至F列分别列出选定文件夹中的所有文件的文件名、文件大小、创建时间、修改时间、访问时间及完整路径。方法如下: 1.按Alt+F11,打开VBA编辑器,单击菜单“插入→模块”,将下面的代码粘贴到右侧的代码窗口中: Option Explicit Sub GetFileList() Dim strFolder As String Dim varFileList As Variant Dim FSO As Object, myFile As Object Dim myResults As Variant Dim l As Long '显示打开文件夹对话框 With Application.FileDialog(msoFileDialogFolderPicker) .Show If .SelectedItems.Count = 0 Then Exit Sub '未选择文件夹 strFolder = .SelectedItems(1) End With '获取文件夹中的所有文件列表 varFileList = fcnGetFileList(strFolder) If Not IsArray(varFileList) Then MsgBox "未找到文件", vbInformation Exit Sub End If '获取文件的详细信息,并放到数组中 ReDim myResults(0 To UBound(varFileList) + 1, 0 To 5) myResults(0, 0) = "文件名" myResults(0, 1) = "大小(字节)" myResults(0, 2) = "创建时间" myResults(0, 3) = "修改时间" myResults(0, 4) = "访问时间" myResults(0, 5) = "完整路径" Set FSO = CreateObject("Scripting.FileSystemObject") For l = 0 To UBound(varFileList) Set myFile = FSO.GetFile(CStr(varFileList(l))) myResults(l + 1, 0) = CStr(varFileList(l)) myResults(l + 1, 1) = myFile.Size myResults(l + 1, 2) = myFile.DateCreated myResults(l + 1, 3) = myFile.DateLastModified myResults(l + 1, 4) = myFile.DateLastAccessed myResults(l + 1, 5) = myFile.Path Next l fcnDumpToWorksheet myResults Set myFile = Nothing Set FSO = Nothing End Sub Private Function fcnGetFileList(ByVal strPath As String, Optional strFilter As String) As Variant ' 如果文件夹中包含文件返回一个二维数组,否则返回False Dim f As String Dim i As Integer Dim FileList() As String If strFilter = "" Then strFilter = "*.*" Select Case Right$(strPath, 1) Case "/", "/" strPath = Left$(strPath, Len(strPath) - 1) End Select ReDim Preserve FileList(0) f = Dir$(strPath & "/" & strFilter) Do While Len(f) > 0 ReDim Preserve FileList(i) As String FileList(i) = f i = i + 1 f = Dir$() Loop If FileList(0) <> Empty Then fcnGetFileList = FileList Else fcnGetFileList = False End If End Function Private Sub fcnDumpToWorksheet(varData As Variant, Optional mySh As Worksheet) Dim iSheetsInNew As Integer Dim sh As Worksheet, wb As Workbook Dim myColumnHeaders() As String Dim l As Long, NoOfRows As Long If mySh Is Nothing Then '新建一个工作簿 iSheetsInNew = Application.SheetsInNewWorkbook Application.SheetsInNewWorkbook = 1 Set wb = Application.Workbooks.Add Application.SheetsInNewWorkbook = iSheetsInNew Set sh = wb.Sheets(1) Else Set mySh = sh End If With sh Range(.Cells(1, 1), .Cells(UBound(varData, 1) + 1, UBound(varData, 2) + 1)) = varData .UsedRange.Columns.AutoFit End With Set sh = Nothing Set wb = Nothing End Sub 2.关闭VBA编辑器,回到Excel工作表中,按Alt+F8,打开“宏”对话框,选择“GetFileList”,单击“运行”按钮。 |
已经解决了,新的代码
---------------------------------------------
Sub searchfiles()
With Application.FileSearch
.NewSearch
.LookIn = "D:/ttt"
.Filename = "*.xls"
.SearchSubFolders = True
.FileType = msoFileTypeAllFiles
If .Execute() > 0 Then
For i = 1 To .FoundFiles.Count
Worksheets("sheet3").Cells(i, 2).Value = .FoundFiles(i)
Dim fs, f, s
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFile(.FoundFiles(i))
s = "Created: " & f.DateCreated
Worksheets("sheet3").Cells(i, 3).Value = s
Set f = Nothing
Set fs = Nothing
Next i
Else
MsgBox "no file found."
End If
End With
End Sub
相关文章推荐
- VBA 获取文件夹内的文件列表
- (转)用VBA获取文件夹中的文件列表
- golang获取文件夹下面的文件列表
- Windows Store App 获取文件及文件夹列表
- C#获取文件夹文件列表
- 利用NSFileManager获取文件(文件夹)列表
- C/C++ 获取文件夹下的所有文件列表
- 利用NSFileManager获取文件(文件夹)列表
- 获取服务器文件夹下文件列表
- 递归获取文件夹文件列表
- Qt获取文件夹下文件夹,文件列表
- Python获取文件夹下所有的文件路径列表
- vba 宏获取文件夹中所有excel文件,对slk文件数据每3000个求平均值
- 获取ftp服务器上指定文件夹的文件列表(包含文件大小)
- cocos3——5.js获取文件夹下文件列表
- 【转载】C#如何操控FTP,获取FTP文件或文件夹列表,获取FTP文件大小,FTP上传,FTP删除文件,FTP新建文件夹、删除文件夹
- 获取文件夹下文件列表
- Android获取手机文件夹及文件列表的方法
- [sharepoint]rest api文档库文件上传,下载,拷贝,剪切,删除文件,创建文件夹,修改文件夹属性,删除文件夹,获取文档列表
- symbian 获取指定路径下的文件夹和文件列表