[VBA] EXCEL/WPS 批量导入TXT文件
本帖最后由 ittech 于 2024-9-9 14:11 编辑这份代码,实现了批量将多个TXT文件内容导入到EXCEL。
众所周知,WPS表格只支持单文件导入(不支持批量)、EXCEL需要Power Pivot(我的插件崩了不能用)、FF格子则是会员功能(大冤种)。本人为了自己不被活活累死,在AI的协助下创作了这份代码,从此不再做牛马!
现在只需要Alt+F11,新建一个模块,把代码复制进去,将FolderPath = "C:\YourFolderPath\" ' 请将这里的路径修改为你的TXT文件所在的文件夹路径,就可以实现批量导入啦,非常的人性。
再说一下使用情景:
甲方是做情报的,我们是做报文处理的,甲方提供的数据包里一次大概有5万多份TXT文件,需要把每个文件的内容作为一行统统提取到Excel里。
5万多条导入大概需要20~30秒时间。
因为内容需要保密,而且也不复杂我就不贴图了。在论坛搜索过,没有类似的帖子,如果觉得好用请点赞鼓励一下,谢谢!
分为两个版本:
1:不带文件名的
'吾爱首发
'作者:ITTECH
'日期:2024年9月9日
'简介:批量导入TXT内容到EXCEL,不导入文件名,只导入内容。
Sub ImportTxtFilesToExcel()
Dim FolderPath As String
Dim FileName As String
Dim Sheet As Worksheet
Dim Cell As Range
Dim FileContent As String
Dim FilePath As String
Dim RowIndex As Long
' 设置文件夹路径
FolderPath = "E:\YourFolderPath\" ' 请将这里的路径修改为你的TXT文件所在的文件夹路径
FileName = Dir(FolderPath & "*.txt")
' 创建或选择一个工作表
Set Sheet = ThisWorkbook.Sheets("Sheet1") ' 请将"Sheet1"修改为你的工作表名
RowIndex = 1 ' 从第一行开始
' 遍历文件夹中的所有TXT文件
Do While FileName <> ""
FilePath = FolderPath & FileName
FileContent = ReadFile(FilePath)
' 将文件内容放入工作表的单元格中
Set Cell = Sheet.Cells(RowIndex, 1) ' 假设内容放在第一列
Cell.Value = FileContent
' 准备读取下一个文件
FileName = Dir()
RowIndex = RowIndex + 1
Loop
MsgBox "所有TXT文件已成功导入到Excel中。"
End Sub
Function ReadFile(FilePath As String) As String
Dim FileContent As String
Dim FileNo As Integer
FileNo = FreeFile
Open FilePath For Input As #FileNo
FileContent = Input$(LOF(FileNo), FileNo)
Close #FileNo
ReadFile = FileContent
End Function
2:带文件名的
'吾爱首发
'作者:ITTECH
'日期:2024年9月9日
'简介:批量导入TXT内容到EXCEL,导入文件名(第一列),导入内容(第二列)。
Sub ImportTxtFilesToExcel()
Dim FolderPath As String
Dim FileName As String
Dim Sheet As Worksheet
Dim Cell As Range
Dim FileContent As String
Dim FilePath As String
Dim RowIndex As Long
' 设置文件夹路径
FolderPath = "C:\YourFolderPath\" ' 请将这里的路径修改为你的TXT文件所在的文件夹路径
FileName = Dir(FolderPath & "*.txt")
' 创建或选择一个工作表
Set Sheet = ThisWorkbook.Sheets("Sheet1") ' 请将"Sheet1"修改为你的工作表名
RowIndex = 1 ' 从第一行开始
' 遍历文件夹中的所有TXT文件
Do While FileName <> ""
FilePath = FolderPath & FileName
FileContent = ReadFile(FilePath)
' 将文件名放入第一列,文件内容放入第二列
Sheet.Cells(RowIndex, 1).Value = FileName ' 文件名在第一列
Sheet.Cells(RowIndex, 2).Value = FileContent ' 文件内容在第二列
' 准备读取下一个文件
FileName = Dir()
RowIndex = RowIndex + 1
Loop
MsgBox "所有TXT文件已成功导入到Excel中。"
End Sub
Function ReadFile(FilePath As String) As String
Dim FileContent As String
Dim FileNo As Integer
' 使用FreeFile获取一个可用的文件号
FileNo = FreeFile
' 打开文件进行输入
Open FilePath For Input As #FileNo
' 读取文件内容
FileContent = Input$(LOF(FileNo), FileNo)
' 关闭文件
Close #FileNo
' 返回文件内容
ReadFile = FileContent
End Function
之前我还发过两个代码,大家有兴趣也可以看一下:
PPT/WPS演示 超级好用的形状(矩形)创建代码
Excel/WPS 给一列插入序号,支持合并单元格 感谢大佬无私奉献,我感觉以后应该能用得上,收藏了。感谢 试过好用,支持原创。感谢分享! 感谢楼主分享。求您是如何使用AI,生成自己想要的语句代码的。 学习了,谢谢楼主分享 drinkingcat 发表于 2024-9-9 14:43
感谢楼主分享。求您是如何使用AI,生成自己想要的语句代码的。
用对话式LLM比如KIMI,直接说需求,要求生成VBA代码即可。
可能没有专家编写的优秀,但是能用。 设置文件路径那里,用弹出对话框让用户选择文件更好 ittech 发表于 2024-9-9 14:52
用对话式LLM比如KIMI,直接说需求,要求生成VBA代码即可。
可能没有专家编写的优秀,但是能用。
收到,感谢回复。 感谢楼主分享! 最近开学,用上了vba,我多学学有好处。
页:
[1]
2