excel vba 获取当前文件名_VBA批量创建文件目录及链接,建议收藏备用

通过Excel VBA,您可以实现灵活地提取文件夹内的文件信息。本文介绍了如何创建一个VBA宏,该宏允许用户只需选择文件夹,就能获取其中的文件列表和属性。操作步骤包括在VBE中插入模块,复制代码,插入按钮并指定宏。这是一个实用的技巧,适合经常需要处理大量文件的用户,建议将Excel另存为加载宏工作簿以便长期使用。
摘要由CSDN通过智能技术生成

小伙伴们,之前有跟大家分享过Power Query获取文件夹内文件清单及其属性的方法【Excel快速获取文件列表及文件属性】。今天教大家通过VBA代码来实现同样的功能,提取文件夹内的文件信息更加灵活,只要选择对应的文件夹即可。

02814877dd6bf64279cf43364e729588.gif

实现效果

操作方法:

1. 在Excel界面按快捷键ALT+F11进入VBE界面。

2. 在VBE工程里面插入一个模块。

3. 将以下代码复制到模块中。

4. 关闭VBE界面,返回Excel界面,从开发工具中找到表单控件,插入一个按钮。

5. 按钮指定宏[GetFileList]即可。

05be417b7fa2b200f3ea15aa376d1fc4.gif

详细的操作过程

以下是实现本次功能要用到的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 PathShtEnd 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 LoopEnd 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 IfEnd Function

最后提个醒:

别忘了把你的Excel文件另存为加载宏工作簿,这样才可变成永久可以的工具。

以下是一个 VBA 的示例代码,可以批量获取指定文件夹下的所有文件名,并将文件内容写入 Excel 表格中。你可以根据自己的需求进行修改和调整。 ```VBA Sub BatchGetFileNameAndContent() Dim path As String Dim fileName As String Dim content As String Dim row As Integer '指定文件夹路径 path = "C:\test\" '新建一个Excel工作簿 Workbooks.Add '设置工作表名称 ActiveSheet.Name = "Files" '设置表头 Cells(1, 1) = "文件名" Cells(1, 2) = "文件内容" '获取文件名和内容并写入表格中 fileName = Dir(path & "*.*") row = 2 Do While fileName <> "" '获取文件名 Cells(row, 1) = fileName '获取文件内容 Open path & fileName For Input As #1 content = Input(LOF(1), 1) Close #1 Cells(row, 2) = content '进入下一行 row = row + 1 '获取下一个文件名 fileName = Dir() Loop End Sub ``` 在上述代码中,我们首先指定了要获取文件名和内容的文件夹路径 `path`,然后新建了一个 Excel 工作簿,并在其中新建了一个名为 "Files" 的工作表。接下来,我们循环遍历该文件夹下的所有文件,通过 `Dir` 函数获取每个文件的文件名,然后通过 `Open` 和 `Input` 函数获取文件内容,并将文件名和内容分别写入 Excel 表格中。最后,我们通过 `Close` 函数关闭文件,循环进入下一个文件。 注意,在使用这个代码之前,你需要先在 VBA 编辑器中打开工具->引用,勾选Microsoft Scripting Runtime库,否则会出现“类型不匹配”等错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值