ittech 发表于 2024-9-9 14:06

[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 给一列插入序号,支持合并单元格

squallzcy 发表于 2024-9-9 14:10

感谢大佬无私奉献,我感觉以后应该能用得上,收藏了。感谢

netpeng 发表于 2024-9-9 14:19

试过好用,支持原创。感谢分享!

drinkingcat 发表于 2024-9-9 14:43

感谢楼主分享。求您是如何使用AI,生成自己想要的语句代码的。

zhangxiaoxiao 发表于 2024-9-9 14:50

学习了,谢谢楼主分享

ittech 发表于 2024-9-9 14:52

drinkingcat 发表于 2024-9-9 14:43
感谢楼主分享。求您是如何使用AI,生成自己想要的语句代码的。

用对话式LLM比如KIMI,直接说需求,要求生成VBA代码即可。
可能没有专家编写的优秀,但是能用。

lzspain 发表于 2024-9-9 15:06

设置文件路径那里,用弹出对话框让用户选择文件更好

drinkingcat 发表于 2024-9-9 15:43

ittech 发表于 2024-9-9 14:52
用对话式LLM比如KIMI,直接说需求,要求生成VBA代码即可。
可能没有专家编写的优秀,但是能用。

收到,感谢回复。

otho 发表于 2024-9-9 16:25

感谢楼主分享!

下载小王子 发表于 2024-9-9 16:35

最近开学,用上了vba,我多学学有好处。
页: [1] 2
查看完整版本: [VBA] EXCEL/WPS 批量导入TXT文件