网站首页 > 技术教程 正文
小伙伴们,之前有跟大家分享过Power Query获取文件夹内文件清单及其属性的方法【Excel快速获取文件列表及文件属性】。今天教大家通过VBA代码来实现同样的功能,提取文件夹内的文件信息更加灵活,只要选择对应的文件夹即可。
操作方法:
1. 在Excel界面按快捷键ALT+F11进入VBE界面。
2. 在VBE工程里面插入一个模块。
3. 将以下代码复制到模块中。
4. 关闭VBE界面,返回Excel界面,从开发工具中找到表单控件,插入一个按钮。
5. 按钮指定宏[GetFileList]即可。
以下是实现本次功能要用到的VBA代码,有详细注解,应用非常广泛,建议收藏备用。
Sub GetFileList()
'定义文件夹路径变量
Dim PathSht As String
'清空模板文件里面的数据
ActiveSheet.Range("A3:H65536").Clear
'调用文件路径获取方法,弹出文件夹选择对话框
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show Then PathSht = .SelectedItems(1) Else Exit Sub
End With
'先获取当前文件夹内的文件
GetFileFromFolder PathSht & "\"
'获取子文件夹内的文件
GetFolderList PathSht
End Sub
'方法一:从文件夹里面提取文件和文件信息
Function GetFileFromFolder(folder_name)
'定义文件操作对象
Dim fso As Object
'设置文件操作对象
Set fso = CreateObject("Scripting.FileSystemObject")
'所有文件类型,如果只要Excel文件则修改为 FileType = "*.xls*"
FileType = "*.*"
'查找第一个文件
sPath = Dir(folder_name & FileType)
'循环到没有文件为止
Do While Len(sPath)
'将文件对象赋值给objfile,方便后续获取对应属性数据
Set objfile = fso.GetFile(folder_name & sPath)
'当前活动工作表
With ActiveSheet
'定位到第一个空行位置
endrow = .Range("A65536").End(xlUp).Row + 1
'A列存放文件夹名称
.Range("A" & endrow) = folder_name
'B列存放文件名称
.Range("B" & endrow) = sPath
'C列存放文件类型
.Range("C" & endrow) = objfile.Type
'D列存放文件大小
.Range("D" & endrow) = FormatNumber(objfile.Size / 1024, -1) & "K"
'E列存放文件创建时间
.Range("E" & endrow) = objfile.DateCreated
'F列存放文件修改时间
.Range("F" & endrow) = objfile.DateLastModified
'G列存放文件访问时间
.Range("G" & endrow) = objfile.Datelastaccessed
'H列创建超链接,支持点击打开文件
ActiveSheet.Hyperlinks.Add Anchor:=.Range("H" & endrow), Address:=folder_name & sPath, ScreenTip:="单击打开" & sPath, TextToDisplay:="打开文件"
End With
'查找下一个文件
sPath = Dir
Loop
End Function
'方法二:递归方式循环遍历子文件夹
Function GetFolderList(strFolder)
'定义文件夹操作对象
Dim fso, objFolder, objSubFolder
'设置文件操作对象
Set fso = CreateObject("Scripting.FileSystemObject")
'判断文件夹是否存在
If fso.FolderExists(strFolder) Then
'定义为父文件夹
Set objFolder = fso.getFolder(strFolder)
'定义为子文件夹
Set objSubFolder = objFolder.subFolders
'每一个在父文件夹中的子文件夹
For Each oSubFolder In objSubFolder
'从文件夹里面获取文件
GetFileFromFolder oSubFolder & "\"
'继续获取当前文件夹的子文件夹
GetFolderList oSubFolder.Path
Next
End If
End Function
最后提个醒:
别忘了把你的Excel文件另存为加载宏工作簿,这样才可变成永久可以的工具。
- 上一篇: 软网推荐:视频文件变身屏幕保护程序
- 下一篇: 75.C# 保存文件对话框SaveFileDialog
猜你喜欢
- 2024-10-25 Java 17 NIO 知识点 Files 操作(java17课)
- 2024-10-25 PE格式:新建节并插入代码(怎么用pe创建新用户)
- 2024-10-25 入门Java不迷路!一篇教你搞懂Java 「File类」的概述和方法
- 2024-10-25 Qt 之QTemporaryFile用法(创建临时文件)
- 2024-10-25 EndNote使用技巧(4)之七种方法导入文献?一文全搞定
- 2024-10-25 Vue+Element UI实现断点续传、分片上传、秒传
- 2024-10-25 共享数据资源,VBA代码导入已有文本数据文件的方法
- 2024-10-25 (12)文本文件操作参考(文本的基本操作)
- 2024-10-25 使用StreamWriter类的对文件创建写入
- 2024-10-25 大文件上传:秒传、断点续传、分片上传
欢迎 你 发表评论:
- 10-23Excel计算工龄和年份之差_excel算工龄的公式year
- 10-23Excel YEARFRAC函数:时间的"年份比例尺"详解
- 10-23最常用的10个Excel函数,中文解读,动图演示,易学易用
- 10-23EXCEL中如何计算截止到今日(两个时间中)的时间
- 10-2390%人不知道的Excel神技:DATEDIF 精准计算年龄,告别手动算错!
- 10-23计算工龄及工龄工资(90%的人搞错了):DATE、DATEDIF组合应用
- 10-23Excel中如何计算工作日天数?用这两个函数轻松计算,附新年日历
- 10-23怎样快速提取单元格中的出生日期?用「Ctrl+E」批量搞定
- 最近发表
-
- Excel计算工龄和年份之差_excel算工龄的公式year
- Excel YEARFRAC函数:时间的"年份比例尺"详解
- 最常用的10个Excel函数,中文解读,动图演示,易学易用
- EXCEL中如何计算截止到今日(两个时间中)的时间
- 90%人不知道的Excel神技:DATEDIF 精准计算年龄,告别手动算错!
- 计算工龄及工龄工资(90%的人搞错了):DATE、DATEDIF组合应用
- Excel中如何计算工作日天数?用这两个函数轻松计算,附新年日历
- 怎样快速提取单元格中的出生日期?用「Ctrl+E」批量搞定
- Excel日期函数之DATEDIF函数_excel函数datedif在哪里
- Excel函数-DATEDIF求司龄_exceldatedif函数计算年龄
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)

本文暂时没有评论,来添加一个吧(●'◡'●)