You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将批量TXT文件导入单个Excel文档?含空格分隔数据场景

嘿,这两个需求都是日常办公里常见的批量处理场景,我给你整理了两种不同思路的实现方法,不管你喜欢用可视化操作还是代码自动化,都能搞定:


一、将多个文本文件导入单个Excel文档(每个文件对应独立工作表)

方法1:用Excel内置「获取数据」功能(无需代码,新手友好)

操作步骤非常直观:

  • 打开一个空白Excel工作簿,切换到「数据」选项卡
  • 点击「获取数据」→「自文件」→「自文件夹」,选择存放所有文本文件的文件夹后点击「确定」
  • 在弹出的「文件夹」预览窗口里,直接点击「转换数据」进入Power Query编辑器
  • 编辑器里,点击「添加列」→「自定义列」,输入公式 =Excel.Workbook([Content]) 后点击「确定」
  • 点击新生成的「自定义」列右侧的展开箭头(两个小箭头图标),选择「仅加载数据」,再点击「确定」
  • 最后点击「关闭并上载」,所有文本文件就会自动生成对应的独立工作表了

方法2:用VBA脚本批量导入(适合重复自动化场景)

如果需要频繁做这个操作,用VBA效率更高:

Sub 批量导入文本文件到多工作表()
    Dim 文件夹路径 As String, 文件名 As String
    Dim 目标工作簿 As Workbook, 新工作表 As Worksheet
    
    Set 目标工作簿 = ThisWorkbook
    文件夹路径 = Application.GetOpenFilename("选择存放文本的文件夹", , , , True)
    If 文件夹路径 = "False" Then Exit Sub
    
    文件名 = Dir(文件夹路径 & "\*.txt")
    Do While 文件名 <> ""
        ' 创建新工作表并命名
        Set 新工作表 = 目标工作簿.Sheets.Add(After:=目标工作簿.Sheets(目标工作簿.Sheets.Count))
        新工作表.Name = Replace(文件名, ".txt", "") ' 用文件名作为表名,注意避免重复或非法字符
        
        ' 导入文本文件内容
        With 新工作表.QueryTables.Add( _
            Connection:="TEXT;" & 文件夹路径 & "\" & 文件名, _
            Destination:=新工作表.Range("A1"))
            .TextFileParseType = xlDelimited
            .TextFileSpaceDelimiter = False ' 默认非空格分隔,按需调整
            .Refresh BackgroundQuery:=False
        End With
        
        文件名 = Dir
    Loop
    MsgBox "所有文件导入完成!"
End Sub

使用方式:

  1. 按Alt+F11打开VBA编辑器
  2. 右键点击当前工作簿→「插入」→「模块」,粘贴上述代码
  3. 点击运行按钮,选择目标文件夹即可

二、将500个空格分隔的TXT文件导入单个工作表

方法1:用Power Query批量合并(推荐,无需代码)

Power Query处理这类批量合并特别顺手:

  • 打开空白Excel工作簿,点击「数据」→「获取数据」→「自文件」→「自文件夹」,选择目标文件夹后点击「确定」
  • 点击预览窗口顶部的「合并文件」按钮,选择任意一个TXT文件作为样本,点击「确定」
  • 在弹出的「合并文件」设置窗口里,选择「分隔符」为「空格」,确认数据类型后点击「确定」
  • 最后点击「关闭并上载」,所有文件的数据就会自动合并到单个工作表里了

方法2:用VBA脚本高效合并(适合大文件批量处理)

如果文件总数多、数据量大,VBA的运行速度会更快:

Sub 批量合并空格分隔TXT到单工作表()
    Dim 文件夹路径 As String, 文件名 As String
    Dim 目标工作表 As Worksheet, 行号 As Long
    Dim 文件号 As Integer, 文本行 As String, 数据数组 As Variant
    
    Set 目标工作表 = ThisWorkbook.Sheets(1) ' 默认用第一个工作表作为目标
    行号 = 1 ' 数据起始行
    
    文件夹路径 = Application.GetOpenFilename("选择存放TXT的文件夹", , , , True)
    If 文件夹路径 = "False" Then Exit Sub
    
    ' 先写入第一个文件的表头(如果所有文件表头一致,只写一次)
    文件名 = Dir(文件夹路径 & "\*.txt")
    文件号 = FreeFile
    Open 文件夹路径 & "\" & 文件名 For Input As #文件号
    Line Input #文件号, 文本行
    数据数组 = Split(文本行, " ")
    目标工作表.Range("A" & 行号).Resize(1, UBound(数据数组) + 1) = 数据数组
    行号 = 行号 + 1
    Close #文件号
    
    ' 遍历所有文件,导入数据(跳过表头)
    Do While 文件名 <> ""
        文件号 = FreeFile
        Open 文件夹路径 & "\" & 文件名 For Input As #文件号
        Line Input #文件号, 文本行 ' 跳过第一行表头(无表头则删除此行)
        Do While Not EOF(文件号)
            Line Input #文件号, 文本行
            数据数组 = Split(文本行, " ")
            目标工作表.Range("A" & 行号).Resize(1, UBound(数据数组) + 1) = 数据数组
            行号 = 行号 + 1
        Loop
        Close #文件号
        文件名 = Dir
    Loop
    MsgBox "全部文件合并完成!共导入 " & 行号 - 2 & " 行数据。"
End Sub

使用方式和之前的VBA方法一致,注意如果你的TXT文件没有表头,记得删掉代码里跳过表头的那行Line Input #文件号, 文本行。


内容的提问来源于stack exchange,提问作者ITwarriorCA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:57:50