首页 > Office专区 > Excel教程 >

利用VBA实现多个Excel工作簿快速合并方法

来源:互联网 2023-02-20 19:41:03 版权归原作者所有,如有侵权,请联系我们

利用VBA实现多个Excel工作簿指定工作表快速合并以及所有工作表依次合并的方法。G5q办公区 - 实用经验教程分享!

利用VBA实现多个Excel工作簿快速合并方法G5q办公区 - 实用经验教程分享!

工具/原料

  •  Excel
  •  VBA

方法/步骤

  • 1

    为了便于演示,我在同一个文件夹下随便建了几个Excel文件(当然我们也可以合并不同文件夹下的Excel文档),随机输了一些内容。另外建了一个名称为汇总文件的xls文件,这是我们准备写入代码并汇总数据的Excel空文件。G5q办公区 - 实用经验教程分享!

    利用VBA实现多个Excel工作簿快速合并方法G5q办公区 - 实用经验教程分享!

  • 2

    双击打开汇总文件.xls(当然我们也可以随便新建一个excel文档),按ALT F11打开VBE编辑器,新建一个模块,粘贴如下代码:G5q办公区 - 实用经验教程分享!

    Option ExplicitG5q办公区 - 实用经验教程分享!

    Sub mergeonexls() '合并多工作簿中指定工作表G5q办公区 - 实用经验教程分享!

    On Error Resume NextG5q办公区 - 实用经验教程分享!

    Dim x As Variant, x1 As Variant, w As Workbook, wsh As WorksheetG5q办公区 - 实用经验教程分享!

    Dim t As Workbook, ts As Worksheet, l As Integer, h As LongG5q办公区 - 实用经验教程分享!

    Application.ScreenUpdating = FalseG5q办公区 - 实用经验教程分享!

    Application.DisplayAlerts = FalseG5q办公区 - 实用经验教程分享!

    x = Application.GetOpenFilename(FileFilter:="Excel文件 (*.xls; *.xlsx),*.xls; *.xlsx,所有文件(*.*),*.*", _G5q办公区 - 实用经验教程分享!

    Title:="Excel选择", MultiSelect:=True)G5q办公区 - 实用经验教程分享!

    Set t = ThisWorkbookG5q办公区 - 实用经验教程分享!

    Set ts = t.Sheets(1) '指定合并到的工作表,这里是第一张工作表G5q办公区 - 实用经验教程分享!

    l = ts.UsedRange.SpecialCells(xlCellTypeLastCell).ColumnG5q办公区 - 实用经验教程分享!

    For Each x1 In xG5q办公区 - 实用经验教程分享!

    If x1 > False ThenG5q办公区 - 实用经验教程分享!

    Set w = Workbooks.Open(x1)G5q办公区 - 实用经验教程分享!

    Set wsh = w.Sheets(1) '指定所需合并工作表,这里是第一张工作表G5q办公区 - 实用经验教程分享!

    h = ts.UsedRange.SpecialCells(xlCellTypeLastCell).RowG5q办公区 - 实用经验教程分享!

    If l = 1 And h = 1 And ts.Cells(1, 1) = "" ThenG5q办公区 - 实用经验教程分享!

    wsh.UsedRange.Copy ts.Cells(1, 1)G5q办公区 - 实用经验教程分享!

    ElseG5q办公区 - 实用经验教程分享!

    wsh.UsedRange.Copy ts.Cells(h 1, 1)G5q办公区 - 实用经验教程分享!

    End IfG5q办公区 - 实用经验教程分享!

    w.CloseG5q办公区 - 实用经验教程分享!

    End IfG5q办公区 - 实用经验教程分享!

    NextG5q办公区 - 实用经验教程分享!

    Application.ScreenUpdating = TrueG5q办公区 - 实用经验教程分享!

    Application.DisplayAlerts = TrueG5q办公区 - 实用经验教程分享!

    End SubG5q办公区 - 实用经验教程分享!

    Sub mergeeveryonexls() '将多个工作簿下的工作表依次对应合并到本工作簿下的工作表,即第一张工作表对应合并到第一张,第二张对应合并到第二张……G5q办公区 - 实用经验教程分享!

    On Error Resume NextG5q办公区 - 实用经验教程分享!

    Dim x As Variant, x1 As Variant, w As Workbook, wsh As WorksheetG5q办公区 - 实用经验教程分享!

    Dim t As Workbook, ts As Worksheet, i As Integer, l As Integer, h As LongG5q办公区 - 实用经验教程分享!

    Application.ScreenUpdating = FalseG5q办公区 - 实用经验教程分享!

    Application.DisplayAlerts = FalseG5q办公区 - 实用经验教程分享!

    x = Application.GetOpenFilename(FileFilter:="Excel文件 (*.xls; *.xlsx),*.xls; *.xlsx,所有文件(*.*),*.*", _G5q办公区 - 实用经验教程分享!

    Title:="Excel选择", MultiSelect:=True)G5q办公区 - 实用经验教程分享!

    Set t = ThisWorkbookG5q办公区 - 实用经验教程分享!

    For Each x1 In xG5q办公区 - 实用经验教程分享!

    If x1 > False ThenG5q办公区 - 实用经验教程分享!

    Set w = Workbooks.Open(x1)G5q办公区 - 实用经验教程分享!

    For i = 1 To w.Sheets.CountG5q办公区 - 实用经验教程分享!

    If i > t.Sheets.Count Then t.Sheets.Add After:=t.Sheets(t.Sheets.Count)G5q办公区 - 实用经验教程分享!

    Set ts = t.Sheets(i)G5q办公区 - 实用经验教程分享!

    Set wsh = w.Sheets(i)G5q办公区 - 实用经验教程分享!

    l = ts.UsedRange.SpecialCells(xlCellTypeLastCell).ColumnG5q办公区 - 实用经验教程分享!

    h = ts.UsedRange.SpecialCells(xlCellTypeLastCell).RowG5q办公区 - 实用经验教程分享!

    If l = 1 And h = 1 And ts.Cells(1, 1) = "" ThenG5q办公区 - 实用经验教程分享!

    wsh.UsedRange.Copy ts.Cells(1, 1)G5q办公区 - 实用经验教程分享!

    ElseG5q办公区 - 实用经验教程分享!

    wsh.UsedRange.Copy ts.Cells(h 1, 1)G5q办公区 - 实用经验教程分享!

    End IfG5q办公区 - 实用经验教程分享!

    NextG5q办公区 - 实用经验教程分享!

    w.CloseG5q办公区 - 实用经验教程分享!

    End IfG5q办公区 - 实用经验教程分享!

    NextG5q办公区 - 实用经验教程分享!

    Application.ScreenUpdating = TrueG5q办公区 - 实用经验教程分享!

    Application.DisplayAlerts = TrueG5q办公区 - 实用经验教程分享!

    End SubG5q办公区 - 实用经验教程分享!

    G5q办公区 - 实用经验教程分享!

    利用VBA实现多个Excel工作簿快速合并方法G5q办公区 - 实用经验教程分享!

  • 3

    单击菜单:工具-宏-宏(或者ALT F8),打开宏对话框。G5q办公区 - 实用经验教程分享!

    利用VBA实现多个Excel工作簿快速合并方法G5q办公区 - 实用经验教程分享!

  • 4

    我们先来看看多个Excel工作簿指定工作表快速合并(我这里是指定合并第一张工作表,可自行到代码注释部位更改指定的表)的实现:在宏对话框中运行名称为:mergeonexls的宏,在弹出的Excel选择对话框中选中book1-book3(当然你也可以随便选择一些需要合并的Excel文件),打开。G5q办公区 - 实用经验教程分享!

    利用VBA实现多个Excel工作簿快速合并方法G5q办公区 - 实用经验教程分享!

  • 5

    查看下效果,如下图:G5q办公区 - 实用经验教程分享!

    利用VBA实现多个Excel工作簿快速合并方法G5q办公区 - 实用经验教程分享!

  • 5
  • 6

    利用和上面相同的操作运行mergeeveryonexls宏,在弹出的Excel选择对话框中选中book1-book3,打开。查看所有工作表依次合并的效果,可见不仅把book1-book3中sheet1-sheet3中的内容汇总,因为book1中还含有sheet4工作表,所以还新插入了一个工作表sheet4,汇总了book1中sheet4中的内容,如下图。G5q办公区 - 实用经验教程分享!

    利用VBA实现多个Excel工作簿快速合并方法G5q办公区 - 实用经验教程分享!

    利用VBA实现多个Excel工作簿快速合并方法G5q办公区 - 实用经验教程分享!

  • 7

    演示文档可至http://pan.baidu.com/s/1eQHgsXc处下载。G5q办公区 - 实用经验教程分享!

  • 以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!G5q办公区 - 实用经验教程分享!


    标签: excelVBA合并利用实现

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号