excel合并工作博

复制代码
Sub MergeSelectedFilesIntoCurrentWorkbook()
    Dim ws As Worksheet
    Dim wb As Workbook
    Dim targetWorkbook As Workbook
    Dim fileNames As Variant
    Dim i As Integer
    Dim sheet As Worksheet
    Dim csvWs As Worksheet
    
    ' 选择文件
    fileNames = Application.GetOpenFilename(FileFilter:="Excel Files (*.xls*), *.xls*; CSV Files (*.csv), *.csv", _
                                            Title:="选择要合并的Excel/CSV文件", _
                                            MultiSelect:=True)
                                            
    ' 如果没有选择文件,则退出
    If IsArray(fileNames) = False Then
        MsgBox "没有选择文件,操作取消。"
        Exit Sub
    End If
    
    ' 禁用屏幕更新以提高速度
    Application.ScreenUpdating = False
    
    ' 设置当前工作簿
    Set targetWorkbook = ThisWorkbook
    
    ' 循环遍历选择的文件
    For i = LBound(fileNames) To UBound(fileNames)
        ' 根据文件扩展名进行处理
        If Right(fileNames(i), 4) = ".csv" Then
            ' 处理CSV文件
            Set wb = Workbooks.Open(fileNames(i))
            Set csvWs = wb.Sheets(1)
            csvWs.Copy After:=targetWorkbook.Sheets(targetWorkbook.Sheets.Count)
            wb.Close False
        ElseIf Right(fileNames(i), 4) = "xlsx" Or Right(fileNames(i), 4) = ".xls" Then
            ' 处理Excel文件
            Set wb = Workbooks.Open(fileNames(i))
            For Each sheet In wb.Sheets
                sheet.Copy After:=targetWorkbook.Sheets(targetWorkbook.Sheets.Count)
            Next sheet
            wb.Close False
        End If
    Next i
    
    ' 重新启用屏幕更新
    Application.ScreenUpdating = True
    
    MsgBox "所有选定的文件已成功合并到当前工作簿中。"
End Sub
  1. 文件选择Application.GetOpenFilename 方法允许选择 .xls, .xlsx, 和 .csv 文件。MultiSelect:=True 允许一次选择多个文件。

  2. 文件类型判断:代码通过检查文件的扩展名来决定如何处理:

    • CSV文件:打开文件后,只包含一个工作表,因此直接复制该工作表到目标工作簿中。
    • Excel文件 :对于 .xls.xlsx 文件,代码将遍历所有工作表并复制到目标工作簿。
  3. 文件关闭:在处理完每个文件后,源文件将被关闭以释放资源。

使用方法

  1. 打开目标工作簿。
  2. ALT + F11 打开VBA编辑器。
  3. 插入新模块 (Insert > Module) 并粘贴代码。
  4. 运行宏 (F5 键),选择你需要合并的Excel/CSV文件。

注意事项

  • CSV文件的格式:CSV文件通常只包含数据,没有格式或公式。当它们被合并时,数据将被直接复制到目标工作簿中,格式将使用默认的工作表格式。
  • 重复工作表名称:如果目标工作簿中已有相同名称的工作表,Excel将自动重命名新复制的工作表(如 "Sheet1 (2)"),以避免名称冲突。
相关推荐
ohoy1 小时前
easyPoi导出多sheet页 一个班级一张Sheet
excel
缺点内向3 小时前
如何使用C#将Excel工作表拆分为独立文件
开发语言·c#·.net·excel
凌盛羽3 小时前
用Python非常流行的openpyxl库对Excel(.xlsx格式)文件进行创建、读取、写入、显示等操作
数据库·python·链表·excel
CodeCraft Studio3 小时前
Excel处理控件Aspose.Cells教程:使用 C# 在 Excel 中创建股票高低收盘图
信息可视化·c#·excel·aspose·股票收盘图·c# excel库·收盘图
Oll Correct3 小时前
Excel基础操作(四)
笔记·excel
我命由我123453 小时前
Excel - 在 Excel 中为指定列设置下拉选项
经验分享·学习·职场和发展·编辑器·excel·求职招聘·学习方法
Full Stack Developme3 小时前
Java实现Word、Excel、PDF文件 在线预览
java·word·excel
heartbeat..1 天前
使用 Apache POI 实现 Excel 文件读写(导入 导出)操作的工具类
java·apache·excel·文件
星空椰1 天前
Java Excel转PDF
pdf·excel
ohoy1 天前
easypoi 带图片导入 公司表
excel