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

如何将多个CSV文件导入单个Excel并添加文件名至新列

合并CSV文件并添加对应文件名列的VBA代码修正

原代码存在几个关键问题,导致无法实现需求:

  • 未定义FolderName变量,应使用已声明的FolderPath
  • 数据复制语句逻辑错误,无法将CSV内容正确粘贴到结果工作簿
  • 缺少为每行添加对应CSV文件名的逻辑

以下是修正后的完整代码,同时优化了表头处理(避免重复表头):

Sub Combinecsvs()
    Dim FolderPath As String
    Dim FileName As String
    Dim WbResult As Workbook
    Dim wsResult As Worksheet
    Dim wbCSV As Workbook
    Dim lastRowResult As Long
    Dim lastRowCSV As Long
    Dim colCountCSV As Integer
    
    ' 替换为你的CSV文件夹路径
    FolderPath = "C:\YourCSVFolder\"
    ' 确保路径末尾包含斜杠
    If Right(FolderPath, 1) <> "\" Then
        FolderPath = FolderPath & "\"
    End If
    
    Set WbResult = ActiveWorkbook
    Set wsResult = WbResult.ActiveSheet
    
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    
    FileName = Dir(FolderPath & "*.csv")
    
    Do While FileName <> vbNullString
        Set wbCSV = Workbooks.Open(FolderPath & FileName)
        With wbCSV.ActiveSheet
            lastRowCSV = .UsedRange.Rows.Count
            colCountCSV = .UsedRange.Columns.Count
            
            ' 获取结果表的最后一行位置
            lastRowResult = wsResult.Cells(Rows.Count, 1).End(xlUp).Row
            
            ' 处理表头:结果表为空时复制表头,否则跳过表头
            If lastRowResult = 1 And wsResult.Cells(1, 1) = "" Then
                .UsedRange.Copy wsResult.Cells(1, 1)
                lastRowResult = lastRowCSV
            Else
                .UsedRange.Offset(1).Copy wsResult.Cells(lastRowResult + 1, 1)
                lastRowResult = lastRowResult + (lastRowCSV - 1)
            End If
            
            ' 在新增列中填充当前CSV文件名
            wsResult.Range(wsResult.Cells(lastRowResult - lastRowCSV + 2, colCountCSV + 1), _
                          wsResult.Cells(lastRowResult, colCountCSV + 1)).Value = FileName
        End With
        
        wbCSV.Close False
        FileName = Dir()
    Loop
    
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
End Sub

关键说明

  • 路径设置:将FolderPath的值替换为你的CSV文件所在的实际文件夹路径
  • 表头处理:如果结果工作表是空的,会保留第一个CSV的表头;后续CSV仅复制数据行,避免重复表头
  • 文件名列:每个CSV的数据行都会在最右侧新增一列,填充对应的CSV文件名
  • 性能优化:关闭屏幕更新和提示,提升运行速度;操作完成后恢复默认设置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 08:50:24