Excel VBA 读取当前文件夹下的txt文件名

本文介绍了如何通过Excel VBA宏编程来读取当前工作簿所在文件夹下的所有TXT文件的名称。教程详细讲解了VBA代码实现过程,帮助用户自动化处理相关文件操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Sub read_txt_file_name()
'读取当前文件夹下txt文件的文件名,写入sheet1的第一列

Dim r As Long
Dim Fso As Object
Dim myfile As Object
Dim mySheet As Worksheet
Dim txtFolder As Object


r = 1

Set txtFolder =
<think>我们使用VBA读取文件夹目录结构,包括文件名、路径和扩展名。 我们可以使用Dir函数遍历文件夹中的文件,同时使用FileSystemObject(FSO)来获取更详细的信息,比如文件大小、修改日期等(虽然用户当前只要求文件名、路径和扩展名,但FSO更强大且易于扩展)。 不过,用户的问题中明确要求:文件名、所在文件夹路径和文件扩展名。 步骤: 1. 创建一个新的子过程(Sub)。 2. 定义变量:用于文件夹路径、文件名、行号等。 3. 使用Dir函数循环遍历文件夹中的每个文件。 4. 对于每个文件,我们将文件名、路径和扩展名输出到工作表中。 5. 注意:扩展名可以通过文件名的后缀获取,我们可以使用VBA的InStrRev和Mid函数来提取,或者使用FileSystemObject的GetExtensionName方法。 但是,为了代码的清晰和可扩展性,我们使用FileSystemObject(FSO)来获取扩展名。同时,FSO也可以用来获取其他属性(如日期、大小等),为后续扩展留有余地。 我们将采用以下两种方法之一: 方法A:仅使用Dir函数(轻量,但扩展名需要自己处理) 方法B:使用FileSystemObject(推荐,因为更规范,且便于以后添加其他属性) 这里我们使用方法B,因为用户后续可能还需要添加文件大小和修改日期(见用户之前的问题中的相关问题3)。 具体步骤: 1. 引用Microsoft Scripting Runtime(也可以后期绑定,这里使用后期绑定避免引用问题)。 2. 创建FSO对象。 3. 获取文件夹对象。 4. 遍历文件夹中的文件。 5. 输出每个文件的名称、路径、扩展名。 注意:用户要求的是“所在文件夹路径”,即文件所在的文件夹路径,而不是包括文件名的完整路径。但注意,用户要求的是三个信息:文件名、所在文件夹路径、文件扩展名。 因此,我们输出: 文件名(不带路径) 所在文件夹路径(即文件夹路径) 文件扩展名(如:.xlsx) 我们也可以输出完整路径,但用户没有要求完整路径。所以按用户要求。 代码结构: 1. 定义变量 2. 设置文件夹路径 3. 创建FSO对象和文件夹对象 4. 循环遍历文件 5. 将信息写入工作表 我们将允许用户选择文件夹路径(可以通过输入框输入),也可以直接在代码中修改。 下面编写代码:</think>以下是通过Excel VBA读取文件夹目录结构(包括文件名、路径和扩展名)的完整解决方案: ### 解决方案代码 ```vba Sub GetFolderDirectory() Dim fso As Object ' FileSystemObject Dim folder As Object ' 文件夹对象 Dim file As Object ' 文件对象 Dim ws As Worksheet ' 工作表对象 Dim folderPath As String ' 文件夹路径 Dim rowNum As Integer ' 起始行号 ' 设置参数 Set ws = ThisWorkbook.Sheets("Sheet1") ' 修改为你的工作表名称 folderPath = "C:\YourFolderPath\" ' 修改为目标文件夹路径 rowNum = 1 ' 起始行号 ' 清空原有数据(保留标题行) If rowNum < ws.UsedRange.Rows.Count Then ws.Rows(rowNum + 1 & ":" & ws.UsedRange.Rows.Count).ClearContents End If ' 创建文件系统对象 Set fso = CreateObject("Scripting.FileSystemObject") ' 检查文件夹是否存在 If Not fso.FolderExists(folderPath) Then MsgBox "文件夹不存在: " & folderPath, vbCritical Exit Sub End If ' 获取文件夹对象 Set folder = fso.GetFolder(folderPath) ' 写入标题 ws.Cells(rowNum, 1).Value = "文件名" ws.Cells(rowNum, 2).Value = "文件路径" ws.Cells(rowNum, 3).Value = "扩展名" rowNum = rowNum + 1 ' 遍历文件夹中的文件 For Each file In folder.Files ws.Cells(rowNum, 1).Value = file.Name ' 文件名 ws.Cells(rowNum, 2).Value = file.ParentFolder & "\" ' 文件路径 ws.Cells(rowNum, 3).Value = fso.GetExtensionName(file) ' 扩展名 rowNum = rowNum + 1 Next file ' 自动调整列宽 ws.Columns("A:C").AutoFit ' 清理对象 Set file = Nothing Set folder = Nothing Set fso = Nothing MsgBox "目录生成完成!共找到 " & folder.Files.Count & " 个文件", vbInformation End Sub ``` ### 使用说明 1. **准备Excel**: - 按 `Alt + F11` 打开VBA编辑器 - 在左侧工程资源管理器右键 → 插入 → 模块 - 粘贴上述代码 2. **修改参数**: - 将 `folderPath` 改为你的目标文件夹路径(例如 `"D:\Documents\"`) - 修改 `ws` 的工作表名称(默认使用"Sheet1") 3. **执行宏**: - 返回Excel界面 - 按 `Alt + F8` → 选择 `GetFolderDirectory` → 点击"执行" 4. **结果示例**: | 文件名 | 文件路径 | 扩展名 | |-------|---------|-------| | Report.docx | C:\Docs\ | docx | | Budget.xlsx | C:\Docs\ | xlsx | | Image.png | C:\Docs\ | png | ### 关键功能说明 1. **文件系统对象(FSO)**: - 使用 `Scripting.FileSystemObject` 访问文件系统 - 支持遍历文件夹、获取文件属性等操作[^1] 2. **路径处理**: - `file.ParentFolder` 获取文件所在文件夹路径 - `fso.GetExtensionName()` 提取文件扩展名 3. **错误处理**: - 自动检测文件夹是否存在 - 清空旧数据前保留标题行 - 操作完成显示统计信息 ### 扩展功能 ```vba ' 添加文件大小和修改日期(扩展代码) ws.Cells(rowNum, 4).Value = file.Size / 1024 & " KB" ' 文件大小(KB) ws.Cells(rowNum, 5).Value = file.DateLastModified ' 修改日期 ' 添加超链接(点击打开文件) ws.Cells(rowNum, 1).Hyperlinks.Add _ Anchor:=ws.Cells(rowNum, 1), _ Address:=file.Path, _ TextToDisplay:=file.Name ``` > ⚠️ 注意事项: > 1. 路径需以反斜杠结尾(如 `"C:\Folder\"`) > 2. 首次使用需启用宏(文件 → 选项 → 信任中心) > 3. 支持递归遍历子文件夹(需添加递归函数)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值