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

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

    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
    展开全文
  • 可以通过该工作簿的代码修改成自己想要的工作簿,方便以后每次汇总多个工作簿
  • 在工作中,我们经常遇到工作表合并到一张工作表的问题,比如希望图1所示中各分表中保存的成绩记录,汇总到工作簿中的"成绩表"工作表中,可以用图2下面的程序。 图1 七(3)班工作表中的成绩记录 图2汇总...

    在工作中,我们经常遇到多张工作表合并到一张工作表的问题,比如希望将图1所示中各分表中保存的成绩记录,汇总到工作簿中的"成绩表"工作表中,可以用图2下面的程序。

    图1 七(3)班工作表中的成绩记录

     

    图2 汇总结果

    Sub hebing()     '把各班成绩表中的记录合并到"成绩表"工作表中     Dim sht As Worksheet     Set sht = Worksheets("成绩表")     sht.Rows("2:" & sht.rows.count).Clear      '删除成绩表中的原有记录     Dim wt As Worksheet, xrow As Integer, rng As Range     For Each wt In Worksheets                   '循环处理工作簿中的每张工作表         If wt.Name <> "成绩表" Then             Set rng = sht.Range("A1048576").End(xlUp).Offset(1, 0)             xrow = wt.Range("A1").CurrentRegion.Rows.Count - 1             wt.Range("A2").Resize(xrow, 7).Copy rng         End If     Next End Sub

    第4行代码意思是将"成绩表"工作表赋值给sht对象,在VBA中,给对象赋值,前面必须加Set关键字。

    第5行代码中的sht.rows.count表示sht工作表总共有多少行;在VBA中,Rows表示工作表或某个区域中所有行组成的集合。Rows("2:3")表示选中工作表的第2行到第3行。

    第7行代码中的wt代表工作表集合中的一个工作表,随着循环变换。

    第9行代码表示wt工作表中数据A列下面的第一个空单元格。Range("A1048576")表示工作表最下面一个单元格。

    Range对象的End属性返回包含指定单元格的区域最尾端的单元格,返回结果等同于在单元格中按【End+方向键】(上、下、左、右方向键)组合键得到的单元格。

    Range对象的Offset属性获得相对于安远隔区域一定偏移位置上的单元格区域。Offset(1, 0)表示单元格下面一个单元格。

    第10行表示A1单元格所在当前区域的行数减1。

    第11行表示将子表中的数据复制到汇总表的空白区域。

    Range对象的Resize属性将指定的单元格区域有目的地扩大或缩小,得到一个新的单元格区域。Range("B2").Resize(5,4).Select表示将B2单元格扩展为一个5行4列的单元格区域。

     


    微信公众号:VBA168

    淘宝店铺地址:https://item.taobao.com/item.htm?spm=a1z10.1-c-s.w4004-21233576391.4.1af0683dzrx3oU&id=584940166162

    关注微信公众号,每天及时接收Excel VBA经典示例讲解。

    淘宝店铺提供Excel定制服务。

    祝你工作和学习更轻松!

     

    展开全文
  • 这里帮他们搞了个xlsm小工具,直接个工作簿中的多个sheet合并为1个。 小工具界面 打开文件,里边有操作sheet以及结果sheet。操作是选择文件,或者填写一些合并的一些参数。合并后的数据,显示在结果...

    科普:xls格式最多就65535行,xlsx格式最多是1048576行。

    有时候办公室同事从系统上导出表,当数据量过大的时候,系统都会拆分成多个sheet来导出,每个sheet的表结构一致。
    他们需要将sheet合并,这样以便做筛选,做透视表。

    这里帮他们搞了个xlsm小工具,直接将一个工作簿中的多个sheet合并为1个。

    小工具界面

    打开文件,里边有操作表sheet以及结果表sheet。操作表是选择文件,或者填写一些合并的一些参数。
    合并后的数据,显示在结果表sheet中。

    当时他给我看的工作簿,有40+个sheet,每个sheet有6.5w行,总数就是266.5w条数据,由于单个sheet最多只能是104w条,只能建议他合并为3个sheet,再分别做透视表了。

    sheet起点、终点,是指需要从第几个sheet作为起点,一路合并到终点sheet,这里填的是整数值,也可以不填。
    在这里插入图片描述

    造测试工作簿

    新建了一个工作簿,里边两个sheet,数据内容如下图所示。
    在这里插入图片描述
    在这里插入图片描述

    使用步骤

    打开小工具,点击按钮,可以选择文件。我们选择刚刚造的工作簿。然后后台就开始合并了。
    在这里插入图片描述

    合并结束时,界面会弹框提示,左侧也会罗列一下相关信息。
    在这里插入图片描述
    合并的结果在结果表sheet中。
    在这里插入图片描述

    vba代码

    Private Sub CommandButton1_Click()
    Dim k
    Dim start_pos As Integer
    Dim end_pos As Integer
    
    
    '清空sheet
    Sheets("结果表").Range("A:ZZ").Clear
    '选择文件
    Dim filePath As String
    filePath = getFile()
    If filePath = "" Then Exit Sub
    
    '获取参数
    start_pos = ThisWorkbook.Sheets("操作表").Range("B7")
    end_pos = ThisWorkbook.Sheets("操作表").Range("B8")
    If start_pos > end_pos Then
        MsgBox ("起点比终点大?请检查。")
        Exit Sub
    End If
    
    '打开目标文件
    Set k = Workbooks.Open(filePath)
    Dim totalSheet As Integer
    totalSheet = k.Sheets.Count
    
    
    If start_pos <= 0 Then
        start_pos = 1
    ElseIf start_pos > totalSheet Then
        start_pos = totalSheet
    End If
    
    If end_pos = 0 Then
        end_pos = totalSheet
    ElseIf end_pos > totalSheet Then
        end_pos = totalSheet
    End If
    
    '遍历要合并sheet的工作簿
    Dim cnt As Integer
    cnt = 1
    For Each sh In k.Sheets
        If cnt >= start_pos And cnt <= end_pos Then= ThisWorkbook.Sheets("结果表").Range("A1040000").End(xlUp).Row + 1
            sh.UsedRange.Copy ThisWorkbook.Sheets("结果表").Range("A" &)
        End If
        cnt = cnt + 1
    Next
     
    '关闭目标文件
    k.Close SaveChanges:=False
    
    '输出数据
    ThisWorkbook.Sheets("操作表").Range("A5") = "文件名:"
    ThisWorkbook.Sheets("操作表").Range("A6") = "sheet总数:"
    ThisWorkbook.Sheets("操作表").Range("A7") = "sheet起点:"
    ThisWorkbook.Sheets("操作表").Range("A8") = "sheet终点:"
    
    ThisWorkbook.Sheets("操作表").Range("B5") = filePath
    ThisWorkbook.Sheets("操作表").Range("B6") = totalSheet
    ThisWorkbook.Sheets("操作表").Range("B7") = start_pos
    ThisWorkbook.Sheets("操作表").Range("B8") = end_pos
    
    MsgBox ("已生成,请检查,已复制文件" & filePath & "的第" & start_pos & "个至第" & end_pos & "个sheet")
    
    End Sub
    
    
    Function getFile()
    '获取文件完整路径及文件名
    
    '显示打开文件夹对话框
    Set FileDialogObj = Application.FileDialog(msoFileDialogFilePicker)
    With FileDialogObj
        .Title = "请选择文件"
        .AllowMultiSelect = False
    End With
    
    '选择文件
    FileDialogObj.Show
    If FileDialogObj.SelectedItems.Count > 0 Then
        getFile = FileDialogObj.SelectedItems(1)
    Else
        getFile = ""
        MsgBox ("未选择文件")
    End If
    
    End Function
    
    
    
    

    文件下载

    xlsm下载链接

    展开全文
  • 输入以下代码:Private Sub CommandButton1_Click()Dim path, yuan_name '定义路径名,被合并表名称Dim wb As Workbookpath = ThisWorkbook.path '指定路径为合并所在路径yuan_name = Dir(path & "\" & ...

    输入以下代码:

    Private Sub CommandButton1_Click()

    Dim path, yuan_name  '定义路径名,被合并表名称

    Dim wb As Workbook

    path = ThisWorkbook.path '指定路径为合并新表所在路径

    yuan_name = Dir(path & "\" & "*.xlsx") '从该文件夹内遍历所有要合并的表格

    Do While yuan_name <> ""  '遍历的表格名不为空就进入循环

    Set wb = Workbooks.Open(path & "\" & yuan_name) '打开遍历到的表格

    wb.Sheets(1).Range("a2", wb.Sheets(1).Cells.SpecialCells(xlCellTypeLastCell)).Copy  '从a2开始到已用区域最后一个单元格的范围全部复制

    ThisWorkbook.Sheets(1).Cells(ThisWorkbook.Sheets(1).Range("A65536").End(xlUp).Row + 1, 1).PasteSpecial Paste:=xlValues  '从a列最后一个有数据的单元格后的空格开始粘贴

    wb.Close (False) '复制粘贴完成后关闭被合并的表

    yuan_name = Dir  '继续遍历

    Loop

    End Sub

    展开全文
  • 批量合并excel工作簿中同名工作表,适用条件: 1、所有要汇总的工作簿在同一文件夹中,这里以后缀为.xlsx为例; 2、需要合并工作表名称相同(如: “sheet1”),且数据字段一样(如:A列表示序号,B列表示姓名,...
  • 以下的代码功能是:快速合并同一个工作薄中的多个工作表合并成为一个工作表。合并之前,请先创建一个空白的 Sheet 作为合并目标 Sheet ,这个 Sheet 必须是第一个 Sheet 。如果不合并标题行(比如第一行)则 j=1 改...
  • VBA - Excel多工作簿合并计算
  • Excel中利用vba将多个sheet合并在一个sheet中的方法

    万次阅读 多人点赞 2019-02-25 23:52:24
    Sub 合并当前工作簿下的所有工作表() Application.ScreenUpdating = False For j = 1 To Sheets.Count If Sheets(j).Name &amp;lt;&amp;gt; ActiveSheet.Name Then X = Range(&quot;A65536&...
  • 如图所示,如何利用VBA将该工作簿中的各个工作表分别保存至单独的工作簿中,并工作簿名称以工作表标签命名? 部门 市场部 员工编号 姓名 0215 林革壮 0233 李卫卿 0247 申玲 ...
  • 这是一个常用而且经典的例子:根据内容,把N个工作表中的内容,合并到一个工作表中; ¤主要知识点¤ 1、工作表选取和内容的复制; 2、IF分支语句和For循环语句的使用; ¤代码实例¤ Option Explicit Sub ...
  • 如何快速把多个excel表格合并成一个excel呢?首先,我们需要把多个excel都放在同一个文件夹里面,并在这个文件夹里面新建一个excel文件。用microsoft excel打开新建的excel,并右键单击sheet1,或者按ALT+F11...
  • 代码分为三部分: 第一部分是新建一个汇总的工作表,并重新自定义命名; 第二部分是逐一各个工作表复制粘贴到汇总工作表中;...Worksheets.Add '新建一个工作表 Sheets(1).Name = "汇总工作表" ...
  • 原标题:Excel通用VBA代码一键合并多个工作表至总表!一个工作簿中会有很多个相同格式,标题行内容和顺序都一样的工作表,我们想把这个工作表中的数据全部放至一个总表数据中。 图片上示例是3个工作表,实际工作中...
  • '功能:把多个工作簿的第一个工作表合并到一个工作簿的多个工作表,新工作表的名称等于原工作簿的名称 Sub Books2Sheets() '定义对话框变量 Dim fd As FileDialog Set fd = Application.FileDialog...
  • 通过MultiSelect:=True参数允许同时选择多个文件,通过定义变量X,选择的文件名(含路径赋值给X,后指定每个X1在变更集X中,)如何实现通过VBA合并多个指定工作簿到一个新的工作表或者一个工作簿的多个工作表
  • 我们在实际工作中,有时候需要将多个工作薄中的sheet的数据快速合并到一个sheet表里,假如我们使用手动去复制粘贴,这样就特别浪费时间和精力,所以我们可以使用VBA快速实现,我们只需要输入VBA代码。Sub 合并当前...
  • 在我们日常生活中,时时用到合并多个工作簿为一个工作表,这里利用VBA简单实现。希望对大家有点用
  • 為了呈現完整數據或圖表,所有工作表的數據會整至同一個工作表是常用需求。 %使用條件: 1.各工作表的標籤欄位名稱和數量一致 2.請勿更改該程式檔名 %使用方法: 1.點擊Worksheet combination按鈕。 2.選擇欲...
  • 合并sheet页, 合并excel文档, 合并工作表, 合并工作簿合并工作表(sheet)合并多个工作表 仅适用于每个sheet的第一行是数据头,数据从第二行开始。Sub 合并工作表() Dim J As Integer On Error Resume Next Sheets...
  • VBA代码,可以合并选定的多个Excel文件中的所有工作表到一个文件中(多个工作表)
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼Sub 合并()Application.ScreenUpdating = FalseFor j = 1 To Sheets.CountIf Sheets(j).Name <> ActiveSheet.Name ThenhangNum = j + 1ActiveSheet.Cells(hangNum,...
  • 应同事需要写了一段VBA代码,实现的功能是把多个Excel文件的第一个工作表(Sheet)合并到一个Excel文件的多个工作表里,并且新工作表的名称等于原Excel文件的文件名。开发环境Excel2010,但是Excel2003应该也能用,...
  • 1、如果你有现成的一个工作簿含有多个工作表的文件,想分成多个工作簿的话, 可以通过office2007或office2013等打开execl,然后通过execl里面的开发工具, 输入以下运行代码,执行就行(拆分的工作簿在你设置的路径...
  • '功能:把多个工作簿的第一个工作表合并到一个工作簿的多个工作表,新工作表的名称等于原工作簿的名称Sub Books2Sheets()'定义对话框变量Dim fd As FileDialogSet fd = Application.FileDialog(msoFileDialogFileP.....
  • 看着标题估计会有点乱,下面我们以图文的方式来和大家说明,本例子要实现的最终结果!...现在,我们要做的就是,要把这X个工作薄中的Sheet1这个工作表里面的数据复制了之后,粘贴到“合并数据.xls”这个工...
  • 按Alt+F11,打开VBA编辑器,在代码窗口中粘贴下列代码,代码大同小异。 1、保存全部表格,不保留分表格式 Sub 复制() Dim Sh As Worksheet Dim wb As Workbook Dim cPath$, cFile$, nR1&, nR2&, Arr()...
  • 如图,这边需要按照工作内容拆分多个工作表,直接上代码: Sub splitSht() Dim sht As Worksheet Dim d As Object Dim j As Integer Set sht = ThisWorkbook.Worksheets("Sheet1") Set d = CreateObject(...
  • 个工作表数据合并 vba 在两个工作表合并数据 (Combine Data on Two Worksheets)Have you been experimenting with the Power BI tools that are available in the newer versions of Excel. I've done some work...
  • 合并多个EXCEL代码今天工作时,写一个文档,突然需要将多个excel工作簿合并成一个,于是总结一下,希望有用。1、合并多个EXCEL为同一个EXCELSub CombineWorkbooks()Dim FilesToOpenDim x As IntegerOn Error ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,959
精华内容 3,183
关键字:

vba合并多个工作表