(转)用VBA获取文件夹中的文件列表
来源:互联网 发布:神光之宣告者淘宝 编辑:程序博客网 时间:2024/05/19 17:52
转自:http://hi.baidu.com/mwia/blog/item/f88059d20f7198083af3cfc5.html
如果我们要在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)
Set FSO = CreateObject("Scripting.FileSystemObject") Private Function fcnGetFileList(ByVal strPath As String, Optional strFilter As String) As Variant Dim f As String If strFilter = "" Then strFilter = "*.*" Select Case Right$(strPath, 1) ReDim Preserve FileList(0) f = Dir$(strPath & "/" & strFilter) If FileList(0) <> Empty Then Dim iSheetsInNew As Integer If mySh Is Nothing Then '新建一个工作簿 Else Set mySh = sh End If With sh Range(.Cells(1, 1), .Cells(UBound(varData, 1) + 1, UBound(varData, 2) + 1)) = varData End With Set sh = Nothing End Sub 2.关闭VBA编辑器,回到Excel工作表中,按Alt+F8,打开“宏”对话框,选择“GetFileList”,单击“运行”按钮。
myResults(0, 0) = "文件名"
myResults(0, 1) = "大小(字节)"
myResults(0, 2) = "创建时间"
myResults(0, 3) = "修改时间"
myResults(0, 4) = "访问时间"
myResults(0, 5) = "完整路径"
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
' 如果文件夹中包含文件返回一个二维数组,否则返回False
Dim i As Integer
Dim FileList() As String
Case "/", "/"
strPath = Left$(strPath, Len(strPath) - 1)
End Select
Do While Len(f) > 0
ReDim Preserve FileList(i) As String
FileList(i) = f
i = i + 1
f = Dir$()
Loop
fcnGetFileList = FileList
Else
fcnGetFileList = False
End If
End Function
Private Sub fcnDumpToWorksheet(varData As Variant, Optional mySh As Worksheet)
Dim sh As Worksheet, wb As Workbook
Dim myColumnHeaders() As String
Dim l As Long, NoOfRows As Long
iSheetsInNew = Application.SheetsInNewWorkbook
Application.SheetsInNewWorkbook = 1
Set wb = Application.Workbooks.Add
Application.SheetsInNewWorkbook = iSheetsInNew
Set sh = wb.Sheets(1)
.UsedRange.Columns.AutoFit
Set wb = Nothing
- (转)用VBA获取文件夹中的文件列表
- 用VBA获取文件夹中的文件列表
- 【网摘】linux获取文件夹中的文件列表
- C++ 如何获取文件夹中的文件列表
- C#获取文件夹文件列表
- C#获取文件夹文件列表
- 递归获取文件夹文件列表
- Qt获取文件夹下文件夹,文件列表
- PHP获取文件夹列表,文件列表
- EXCEL-VBA:递归遍历文件夹及子文件夹中的文件
- 读取文件夹中的文件列表
- 获得文件夹中的文件列表
- vba 中, 创建文件夹, 获取行数, 新建excel文件
- VBA 获取和设置(文件和文件夹属性…
- VBA遍历文件夹文件
- 获取文件夹所有文件列表创建DataView
- JS 获取本地文件夹的文件列表
- 利用NSFileManager获取文件(文件夹)列表
- 分享一个自己写的字符串工具:字符串格式化拼接
- 火车上的尴尬经历
- dos命令
- 消息的基本知识
- thrift安装手记
- (转)用VBA获取文件夹中的文件列表
- java中的this用法
- Win7下Word2007使用EndNote X v10不能自动加载的问题
- open-drain and push-pull
- 基于Visual Studio2010开发office2010办公自动化应用(10)自定义OutlookAddIn插件
- 介绍怎样解决JavaScript页面刷新与弹出窗口的问题。
- textbox把背景颜色设置成空让它像LABEL一样
- (转)在Tomcat中配置数据源
- 面向对象