工作簿合并

同一文件夹内N个工作簿 ,每个工作簿里N个工作表,最终合并到一个工作表里的代码。

假设每个表格结构相同,第一行为标题,第二行为表头,表头内容固定,行数不固定,列固定14,工作表数量不固定,工作簿数量不固定。

Sub Sample()

Dim MyWb As Workbook

Dim MySht As Worksheet

Dim MyName As String, MyPath As String

Dim MyRow As Long, MySRow As Long, MyShtN As Long

Dim MyArr

MyPath = ThisWorkbook.Path & "\"

MyName = Dir(MyPath & "*.xlsx")

With ActiveSheet

.Cells.Clear

Range("a1") = "标题"

Range("a2:n2") = "表头"

Do While MyName <> ""

If MyName <> ThisWorkbook.Name Then

Set MyWb = Workbooks.Open(MyPath & MyName)

For MyShtN = 1 To Sheets.Count

MySRow = .Cells(Rows.Count, 1).End(xlUp).Row

MyRow = Cells(Rows.Count, 1).End(xlUp).Row

MyArr = Sheets(MyShtN).Range("a3").Resize(MyRow - 2, 14)

.Cells(MySRow + 1, 1).Resize(MyRow - 2, 14) = MyArr

Next

MyWb.Close False

End If

MyName = Dir

Loop

With .UsedRange

.Columns.AutoFit

.Borders.Color = 1

End With

End With

End Sub

原文地址:https://www.cnblogs.com/officeplayer/p/11028941.html

时间: 2024-11-08 04:10:55

工作簿合并的相关文章

vba-多个工作簿合并方法1(用到了数组)

来自<别怕excel vba其实很简单> Sub 多个工作簿合并()' '多个工作簿合并 宏 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 & ":1048576").ClearContents Application.ScreenUpdating = False Dim f

合并当前工作簿下的所有工作表

Sub 合并当前工作簿下的所有工作表() Dim j As Single Application.ScreenUpdating = False For j = 1 To Sheets.Count If Sheets(j).Name <> ActiveSheet.Name Then X = Range("A65536").End(xlUp).Row + 1 Sheets(j).UsedRange.Copy Cells(X, 1) End If Next Range("

把多个工作簿的第一个工作表合并到一个工作簿的多个工作表

功能:把多个工作簿的第一个工作表合并到一个工作簿的多个工作表,新工作表的名称等于原工作簿的名称 Sub Books2Sheets() '定义对话框变量 Dim fd As FileDialog Set fd = Application.FileDialog(msoFileDialogFilePicker) '新建一个工作簿 Dim newwb As Workbook Set newwb = Workbooks.Add With fd If .Show = -1 Then '定义单个文件变量 Di

【原创】如何将多个工作簿中相同格式的工作表合并到一个工作表中

如何将多个工作簿中相同格式的工作表合并到一个工作表中 Sub Books2Sheets() '定义对话框变量 Application.ScreenUpdating = False Dim fd As FileDialog Set fd = Application.FileDialog(msoFileDialogFilePicker) '新建一个工作簿 Dim newwb As Workbook Set newwb = Workbooks.Add With fd If .Show = -1 The

合并一个工作簿下的多个工作表

工作中经常会碰到需要合并多个sheet,下面用VBA来解决此问题,代码如下: Sub 合并当前工作簿下的所有工作表() Application.ScreenUpdating = False For j = 1 To Sheets.Count    If Sheets(j).Name <> ActiveSheet.Name Then        X = Range("A1048576").End(xlUp).Row + 1        Sheets(j).UsedRang

VB6实现Excel多工作簿数据合并

以前的同事,工作需要,让我帮忙完成多个工作簿的汇总. 我就用最熟悉的VB6写了一个Form应用程序,这是因为我不知道她目前的系统和Office情况,如果太高大上了,她不会部署安装.索性就简单粗暴地来个桌面App. App的操作效果: 程序源代码: Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long,

多工作簿合并计算

Public Sub QuickConsolidateMethod() '声明变量 Dim Wb As Workbook, OpenWb As Workbook Dim Sht As Worksheet, OneSht As Worksheet Dim Rng As Range, OneRng As Range, RangeAddress As String Const SHEET_INDEX = 1 Const RANGE_ADDRESS = "C5:L17" Dim FirstCe

Excel VBA在生成副本的工作表中插入本工作簿中的VBA模块代码

即在工作簿中添加一个工作表,然后移出并存为新的工作簿,在移出前将本工作簿的一个模块的代码拷贝至新的工作簿.下面是关键代码: '====================================================================== '各班名单保存为单个xls文件 ActiveSheet.Move ChDir myPath '忽略对话框,覆盖保存 Application.DisplayAlerts = False '班级名称增加"考生号处理"vba模块

如何使用 Visual C# 2005 或 Visual C# .NET 向 Excel 工作簿传输数据

本文分步介绍了多种从 Microsoft Visual C# 2005 或 Microsoft Visual C# .NET 程序向 Microsoft Excel 2002 传输数据的方法.本文还提供了每种方法的优点和缺点,以便您可以选择最适合您的情况的解决方案. 概述 最常用于向 Excel 工作簿传输数据的方法是"自动化".利用"自动化"功能,您可以调用特定于 Excel 任务的方法和属性."自动化"功能为您提供了指定数据在工作簿中所处的位