精华内容
下载资源
问答
  • 在一些操作中,往往会需要将多个工作簿进行合并。一般的操作方法都是打开两个工作簿,然后选中需要移动的工作表,右键单击以后选择“移动或复制”。接下来在新的窗口里面进行设置就可以了。这种方法适合在移动数量较...

    在一些操作中,往往会需要将多个工作簿进行合并。一般的操作方法都是打开两个工作簿,然后选中需要移动的工作表,右键单击以后选择“移动或复制”。接下来在新的窗口里面进行设置就可以了。

    d954ba3a50dc5b146a78c6b81b778340.png

    这种方法适合在移动数量较少的工作表的时候使用。如果有很多的工作簿,都需要进行移动的话,一个一个打开然后再操作肯定是比较麻烦耗时的。这时就可以使用VBA来批量进行操作。

    如图,现在在一个文件夹里面有几个工作簿,里面分别有不同数量的工作表。另外还有一个启用宏的汇总表。

    fcad1a7b60d8c1d85ca5029d2e5ff3d4.png

    下面就需要使用VBA将工作簿1-3汇总到那个总表中。

    打开汇总工作簿,然后运行以下代码:

    Sub MergeWorkbook()   Application.ScreenUpdating = False   Path = "C:\Users\Administrator\Desktop\新建文件夹"   Filename = Dir(Path & "\*.xlsx")   While Filename <> ""       Set wb = Workbooks.Open(Path & "\" & Filename)           For Each Sheet In ActiveWorkbook.Sheets               i = Workbooks("汇总.xlsm").Sheets.Count               Sheet.Copy After:=Workbooks("汇总.xlsm").Sheets(i)           Next Sheet       wb.Close       Filename = Dir   WendEnd Sub

    运行以后其他工作簿里面的工作表就全部复制到汇总工作簿中了。

    8388d6fb1b0e13899a6c93bf0b521542.png

    在实际使用中需要注意的是,这里的路径需要更改为目标文件夹路径,汇总工作表如果不是启用宏的工作簿,也需要修改名称和扩展名,防止运行时出现错误。

    以上就是使用Excel VBA将多个工作簿的全部工作表合并到一个工作簿中的方法了。

    63399571cda68d9e5c8a42685471650e.png

    关于Office办公软件,如果遇到了什么问题,都可以进行留言,看到以后会第一时间进行回复。如果觉得好,也欢迎分享给更多的人,一起学习进步。

    543832f82c940cefdb75d9dde69d82e2.png 0e84a37b5c3438fb8b7c8e757c7cfaf1.png公众号ID:tobefascinating扫码关注 获取知识

    我就知道你“在看”

    f5bf7aa418757a68865c27f0dfb68e76.gif
    展开全文
  • 可以通过该工作簿的代码修改成自己想要的工作簿,方便以后每次汇总多个工作簿
  • 使用VBA合并多个Excel工作簿 例如,需要将多个Excel工作簿中的工作表合并到一个工作簿。这
  • 通过MultiSelect:=True参数允许同时选择多个文件,通过定义变量X,选择的文件名(含路径赋值给X,后指定每个X1在变更集X中,)如何实现通过VBA合并多个指定工作簿到一个新的工作表或者一个工作簿多个工作表。
  • Excel VBA合并工作簿

    2021-01-10 21:34:34
    利用VBA合并工作簿,需要合并的多个工作簿放到解压后的文件夹中,运行后输入文件夹的地址即可。
  • VBA-合并多个工作簿

    万次阅读 多人点赞 2019-06-14 15:54:28
    1.首先我们理清思路,我们所有要合并到一起的Excel工作簿放到一文件夹里,该文件夹里面有一启用宏的工作表,启动该工作表的宏,就可以该文件夹里面的所有Excel文件的内容合并到一张表里面,后面可以将合并...

    1.首先我们理清思路,我们将所有要合并到一起的Excel工作簿放到一个文件夹里,该文件夹里面有一个启用宏的工作表,启动该工作表的宏,就可以将该文件夹里面的所有Excel文件的内容合并到一张表里面,后面可以将合并完成后的数据复制或剪切到新的Excel表中。

    2.代码如下

    Sub 合并目录所有工作簿全部工作表()
    
    Dim MP, MN, AW, Wbn, wn
    
    Dim Wb As Workbook
    
    Dim i, a, b, d, c, e
    
    Application.ScreenUpdating = False
    
    MP = ActiveWorkbook.Path '获取当前工作薄的路径
    
    MN = Dir(MP & "\" & "*.xls") '遍历Excel文件
    
    AW = ActiveWorkbook.Name '获取当前工作簿名称
    
    Num = 0
    
    e = 1
    
    Do While MN <> ""
    
    If MN <> AW Then
    
    Set Wb = Workbooks.Open(MP & "\" & MN)
    
    a = a + 1
    
    With Workbooks(1).ActiveSheet
    
    For i = 1 To Sheets.Count
    '复制工作表内容
    
    If Sheets(i).Range("a1") <> "" Then
    
    Wb.Sheets(i).Range("a1").Resize(1, Sheets(i).UsedRange.Columns.Count).Copy .Cells(1, 1)
    
    d = Wb.Sheets(i).UsedRange.Columns.Count
    
    c = Wb.Sheets(i).UsedRange.Rows.Count - 1
    '增加一列
    wn = Wb.Sheets(i).Name
    
    .Cells(1, d + 1) = "表名"
    
    .Cells(e + 1, d + 1).Resize(c, 1) = MN & wn
    
    e = e + c
    
    Wb.Sheets(i).Range("a2").Resize(c, d).Copy .Cells(.Range("a1048576").End(xlUp).Row + 1, 1)
    
    End If
    
    Next
    
    Wbn = Wbn & Chr(13) & Wb.Name
    
    Wb.Close False
    
    End With
    
    End If
    
    MN = Dir
    
    Loop
    
    Range("a1").Select
    
    Application.ScreenUpdating = True
    
    MsgBox "共合并了" & a & "个工作薄下全部工作表。如下:" & Chr(13) & Wbn, vbInformation, "提示"
    
    End Sub
    

    3.在Excel工作表中整加一个按钮控件,指定宏,点击运行效果如下:

    展开全文
  • VBA - Excel多工作簿合并计算

    因为有人询问合并计算,对VBA略知一些,我就写了一点,希望帮到所需要的人。

    下面是代码:

    '汇总合计,忽略标题行
    Sub 多工作簿合计()
    Application.ScreenUpdating = False
    Dim Wb As Workbook, vrtSelectedItem As Variant, Mysheet As Worksheet, CellAddress
    Dim ShRan As String, Arr() As String, s As Long, Spt, NewPath As String
    On Error Resume Next '遇到错误继续执行
    With Application.FileDialog(msoFileDialogFilePicker)
       .AllowMultiSelect = True
       '多选
      .InitialFileName = ThisWorkbook.Path & "\"
      '默认路径
      .Title = "选择文件"
      '窗口标题
      .Filters.Clear
       '清除文件过滤器
      .Filters.Add "全部文件", "*.*"
      .Filters.Add "Excel文件", "*.xlsm"
      .Filters.Add "Excel文件", "*.xls"
      .Filters.Add "Excel文件", "*.xlsx;*.xls"
       '设置文件过滤器,可以指定多个扩展名,每个扩展名都必须用分号分隔。 例如,可以将参数分配给字符串:".txt;.htm"。
      Range("2:" & Rows.Count).Clear
      If .Show = -1 Then
        For Each vrtSelectedItem In .SelectedItems
        Spt = Split(vrtSelectedItem, "\")
        NewPath = "'" & Replace(vrtSelectedItem, Spt(UBound(Spt)), "[" & Spt(UBound(Spt)) & "]")
        Set Wb = Workbooks.Open(vrtSelectedItem)
        With ThisWorkbook.ActiveSheet
            For Each Mysheet In Wb.Worksheets
            ReDim Preserve Arr(s)
              '获取不包含首行的当前区域
              CellAddress = Split(Mysheet.Cells(2, 1).CurrentRegion.Address, ":")
              ShRan = Mysheet.Name & "'!" & Mysheet.Range("A2:" & CellAddress(1)).Address(ReferenceStyle:=xlR1C1) '数据区域
              Arr(s) = NewPath & ShRan
              s = s + 1
            Next Mysheet
          End With
          Wb.Close
        Next vrtSelectedItem
        Set Wb = Nothing
      End If
    End With
    Range("A2").Consolidate Sources:=Arr, Function:=xlSum, TopRow:=False, LeftColumn:=True, CreateLinks:=False
    Application.ScreenUpdating = True
    End Sub

     

    新建一个工作表,粘贴到模块,F5运行,就可以达到左列合并,左列为一列,不包含标题行(空了一行,标题行手写,或复制其它表的标题)

    展开全文
  • 双击打开汇总文件.xls(当然我们也可以随便新建一excel文档),按ALT+F11打开VBE编辑器,新建一模块,粘贴如下代码:Option ExplicitSub mergeonexls() '合并多工作簿中指定工作表On Error Resume NextDim x As ...

    双击打开汇总文件.xls(当然我们也可以随便新建一个excel文档),按ALT+F11打开VBE编辑器,新建一个模块,粘贴如下代码:

    Option Explicit

    Sub mergeonexls() '合并多工作簿中指定工作表

    On Error Resume Next

    Dim x As Variant, x1 As Variant, w As Workbook, wsh As Worksheet

    Dim t As Workbook, ts As Worksheet, l As Integer, h As Long

    Application.ScreenUpdating = False

    Application.DisplayAlerts = False

    x = Application.GetOpenFilename(FileFilter:="Excel文件 (*.xls; *.xlsx),*.xls; *.xlsx,所有文件(*.*),*.*", _

    Title:="Excel选择", MultiSelect:=True)

    Set t = ThisWorkbook

    Set ts = t.Sheets(1) '指定合并到的工作表,这里是第一张工作表

    l = ts.UsedRange.SpecialCells(xlCellTypeLastCell).Column

    For Each x1 In x

    If x1 <> False Then

    Set w = Workbooks.Open(x1)

    Set wsh = w.Sheets(1) '指定所需合并工作表,这里是第一张工作表

    h = ts.UsedRange.SpecialCells(xlCellTypeLastCell).Row

    If l = 1 And h = 1 And ts.Cells(1, 1) = "" Then

    wsh.UsedRange.Copy ts.Cells(1, 1)

    Else

    wsh.UsedRange.Copy ts.Cells(h + 1, 1)

    End If

    w.Close

    End If

    Next

    Application.ScreenUpdating = True

    Application.DisplayAlerts = True

    End Sub

    Sub mergeeveryonexls() '将多个工作簿下的工作表依次对应合并到本工作簿下的工作表,即第一张工作表对应合并到第一张,第二张对应合并到第二张……

    On Error Resume Next

    Dim x As Variant, x1 As Variant, w As Workbook, wsh As Worksheet

    Dim t As Workbook, ts As Worksheet, i As Integer, l As Integer, h As Long

    Application.ScreenUpdating = False

    Application.DisplayAlerts = False

    x = Application.GetOpenFilename(FileFilter:="Excel文件 (*.xls; *.xlsx),*.xls; *.xlsx,所有文件(*.*),*.*", _

    Title:="Excel选择", MultiSelect:=True)

    Set t = ThisWorkbook

    For Each x1 In x

    If x1 <> False Then

    Set w = Workbooks.Open(x1)

    For i = 1 To w.Sheets.Count

    If i > t.Sheets.Count Then t.Sheets.Add After:=t.Sheets(t.Sheets.Count)

    Set ts = t.Sheets(i)

    Set wsh = w.Sheets(i)

    l = ts.UsedRange.SpecialCells(xlCellTypeLastCell).Column

    h = ts.UsedRange.SpecialCells(xlCellTypeLastCell).Row

    If l = 1 And h = 1 And ts.Cells(1, 1) = "" Then

    wsh.UsedRange.Copy ts.Cells(1, 1)

    Else

    wsh.UsedRange.Copy ts.Cells(h + 1, 1)

    End If

    Next

    w.Close

    End If

    Next

    Application.ScreenUpdating = True

    Application.DisplayAlerts = True

    End Sub

    展开全文
  • Sub 合并当前工作簿下的所有工作表()Application.ScreenUpdating = FalseFor j = 1 To Sheets.CountIf Sheets(j).Name &lt;&gt; ActiveSheet.Name ThenX = Range("A65536").End(xlUp).Row + 1...
  • 今天大家用VBA一键合并,只需要几秒种,为了测试这段代码,我们新建了4个工作簿在文件夹中,数据都是模拟的,做试验一键合并代码操作如下所示:我们看原始表格数据,其中,第1个工作簿有点特殊,这个工作簿中,有...
  • 我有两excel工作簿,我需要从一和一组工作表中取出一组工作表,然后其另存为新工作簿 . 由于我每周做这,我想它保存为宏/ vba .我在网上发现了这代码并对其进行了编辑,但它无效 .Sub CopySheets()Dim...
  • 1、所有要汇总的工作簿在同一文件夹中,这里以后缀为.xlsx为例; 2、需要合并的工作表名称相同(如: “sheet1”),且数据字段一样(如:A列表示序号,B列表示姓名,C列表示月工资等); 3、需要合并的数据所在...
  • 自己学习VBA编程时,利用excel内VBA宏编写的简单命令,涉及一些基础的操作,亲测可用,初学者可以借鉴,也能利用其解决一些简单的办公问题。
  • 前面分享过一个VBA代码的快速合并多个工作簿至一个工作簿,很多小伙伴表示没学会,那么我们今天不需要VBA代码,只需要几步操作就可以完成,第1,2,3,4个工作簿里面的数据如下所示:其中第1个工作簿有两个工作表,...
  • 前提:电脑上装有office2007或office2013等,WPS不行。 1、如果你有现成的一个工作簿含有多个工作表的文件,想分成多个工作簿的话, ...'按照需要分出来的表分成多个工作簿 n = InputBox(“请输入excel的
  • 来自《别怕excel vba其实很简单》 Sub 宏1() ' ' 宏1 宏 Dim bt As Range, r As Long, c As Long r = 1 c = 7 Dim wt As Worksheet Set wt = ThisWorkbook.Worksheets(1) wt.Rows(r + 1 &am...
  • 多个工作簿,指定Sheet工作表的数据合并; 要求: <p>1、如上图,有两个工作簿,每个工作簿里有多个工作表,需要两个工作簿指定Sheet工作表(战力值排名)的...
  • 我们在实际工作中,有时候需要将多个工作薄中的sheet表的数据快速合并到一个sheet表里,假如我们使用手动去复制粘贴,这样就特别浪费时间和精力,所以我们可以使用VBA快速实现,我们只需要输入VBA代码。Sub 合并当前...
  • 存在多个工作簿,且需要转移第一个sheet中的数据(一般为辅导员数据收集的时候)。 多个工作簿的sheet均在相同的位置有数据,如图所示 打开给定工作簿,选择按钮,输入你需要在多个表格中复制的数据位置...
  • 在网上找EXCEL文件合并的方法,思路: 一、Linux 或者window+cmder,直接用命令行cat合并EXCEL文件,但是,需要安装辅助东西才能直接处理(也许也不可以,但是,可以用文件格式转换工具转换是可行的,把EXCEL文件...
  • VBA一键汇总多个工作簿-名称相同的工作表-的指定区域数据 日常工作,我们经常需要汇总相同格式的工作簿的某个工作表的数据 如1月业绩、2月业绩。。。。12月业绩等 姓名 数量 数据22 22 数据23 23 ...
  • 在一些操作中,往往会需要将多个工作簿进行合并。一般的操作方法都是打开两个工作簿,然后选中需要移动的工作表,右键单击以后选择“移动或复制”。接下来在新的窗口里面进行设置就可以了。这种方法适合在移动数量较...
  • 新建一新的工作簿,然后查看代码,以下VBA语句复制进去即可: Sub 合并当前工作簿下的所有工作表() Application.ScreenUpdating = False For j = 1 To Sheets.Count If Sheets(j).Name &amp;lt;&...
  • 本EXCEL宏的功能是一个EXCEL工作簿拆分为多个EXCEL工作簿
  • 参考: VBA 合并同文件夹下多工作簿中同名工作表到 一工作簿一工作表 2022/1/19 更新 跳过不含指定sheet的工作薄并汇总。 Sub Build_Sheet_List() Dim sht As Worksheet, i As Long, strName As String With Columns...
  • 前言:此程序是将多个工作簿汇总至主工作簿的多个工作表中,且每个工作表的name是对应的工作簿的name。 Sub 批量合并workbook至主workbook的多个worksheet中() '1.批量打开文件,将文件路径记录到数组f中 f = ...
  • 代码分为三部分: 第一部分是新建一个汇总的工作表,并重新自定义命名; 第二部分是逐一各个工作表复制粘贴到汇总工作表中;...Worksheets.Add '新建一个工作表 Sheets(1).Name = "汇总工作表" ...
  • excel 宏合并多个工作簿

    千次阅读 2019-09-01 16:30:01
    上一篇博客讲的是合并个工作簿的所有工作表, 我们再来看看合并个工作簿。来看如下两个工作簿,一个是初一年级,一个是初二年级,把它合并到初一年级工作簿中 VBA代码如下 Sub 工作薄间工作表合并() Dim File...
  • 将多个Excel工作簿汇总到一个工作表,可以使用VBA,也可以使用power query。
  • 使用情景:如题,一个包含工作表的工作簿拆分为单工作表工作簿文件 原始文件描述:【旺旺大礼包.xlsx】中有三个工作表,分别是旺仔牛奶、旺旺仙贝、旺旺小小酥 操作流程: 打开旺旺大礼包.xlsx——在菜单栏...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,397
精华内容 1,358
关键字:

vba合并多个工作簿

友情链接: easytxt.zip