合并多个工作薄workbooks到一个工作薄workbook

Sub MergeAllWorkbooks()
    Dim SummarySheet As Worksheet
    Dim FolderPath As String
    Dim NRow As Long
    Dim FileName As String
    Dim WorkBk As Workbook
    Dim SourceRange As Range
    Dim DestRange As Range

    ' Create a new workbook and set a variable to the first sheet.
    Set SummarySheet = Workbooks.Add(xlWBATWorksheet).Worksheets(1)

    ' Modify this folder path to point to the files you want to use.
    FolderPath = "C:\Users\Peter\invoices\"

    ' NRow keeps track of where to insert new rows in the destination workbook.
    NRow = 1

    ' Call Dir the first time, pointing it to all Excel files in the folder path.
    FileName = Dir(FolderPath & "*.xl*")

    ' Loop until Dir returns an empty string.
    Do While FileName <> ""
        ' Open a workbook in the folder
        Set WorkBk = Workbooks.Open(FolderPath & FileName)

        ' Set the cell in column A to be the file name.
        SummarySheet.Range("A" & NRow).Value = FileName

        ' Set the source range to be A9 through C9.
        ' Modify this range for your workbooks.
        ' It can span multiple rows.
        Set SourceRange = WorkBk.Worksheets(1).Range("A9:C9")

        ' Set the destination range to start at column B and
        ' be the same size as the source range.
        Set DestRange = SummarySheet.Range("B" & NRow)
        Set DestRange = DestRange.Resize(SourceRange.Rows.Count, _
           SourceRange.Columns.Count)

        ' Copy over the values from the source to the destination.
        DestRange.Value = SourceRange.Value

        ' Increase NRow so that we know where to copy data next.
        NRow = NRow + DestRange.Rows.Count

        ' Close the source workbook without saving changes.
        WorkBk.Close savechanges:=False

        ' Use Dir to get the next file name.
        FileName = Dir()
    Loop

    ' Call AutoFit on the destination sheet so that all
    ' data is readable.
    SummarySheet.Columns.AutoFit
End Sub

将多个工作薄所有 sheet 放到同一个工作薄

Sub ConslidateWorkbooks()
'Created by Sumit Bansal from http://trumpexcel.com
Dim FolderPath As String
Dim Filename As String
Dim Sheet As Worksheet
Application.ScreenUpdating = False
FolderPath = Environ("userprofile") & "\Desktop\Test\"
Filename = Dir(FolderPath & "*.xls*")
Do While Filename <> ""
 Workbooks.Open Filename:=FolderPath & Filename, ReadOnly:=True
 For Each Sheet In ActiveWorkbook.Sheets
 Sheet.Copy After:=ThisWorkbook.Sheets(1)
 Next Sheet
 Workbooks(Filename).Close
 Filename = Dir()
Loop
Application.ScreenUpdating = True
End Sub

将多个工作薄所有 sheet 放到同一个工作薄sheet中

Sub 合并当前目录下所有工作簿的全部工作表()
Dim mypath, myname, awbname
Dim wb As Workbook, wbn As String
Dim g As Long
Dim num As Long
Dim box As String
Application.ScreenUpdating = False
mypath = ActiveWorkbook.Path
myname = Dir(mypath & "\" & "*.xls")
awbname = ActiveWorkbook.Name
num = 0
Do While myname <> ""
If myname <> awbname Then
Set wb = Workbooks.Open(mypath & "\" & myname)
num = num + 1
With Workbooks(1).ActiveSheet
.Cells(.Range("a65536").End(xlUp).Row + 2, 1) = Left(myname, Len(myname) - 4)
For g = 1 To Sheets.Count
wb.Sheets(g).UsedRange.Copy .Cells(.Range("a65536").End(xlUp).Row + 1, 1)
Next
wbn = wbn & Chr(13) & wb.Name
wb.Close False
End With
End If
myname = Dir
Loop
Range("a1").Select
Application.ScreenUpdating = True
MsgBox "共合并了" & num & "个工作薄下的全部工作表。如下:" & Chr(13) & wbn, vbInformation, "提示"
End Sub
时间: 2024-10-05 12:28:09

合并多个工作薄workbooks到一个工作薄workbook的相关文章

Office 2010中如何多人同时处理一个工作薄

前阵子有个同事问我,Excel上的有一个功能叫share workbook,在Office 2010里他找不着,让我帮他找找,这是一个共享工作薄的功能,允许多人同一时间处理一个工作薄,个人觉得这是一个非常好的功能,在这里SHARE给大家. 打开Office 2010, 切换到Review下,单击"Share Workbook"如下: 在接下来的窗口选中"Allow changes by more than one user at the same time. this als

C#如何获取Excel工作薄中Sheet页(工作表)名集合

#region 获取Excel工作薄中Sheet页(工作表)名集合 02./// <summary> 03./// 获取Excel工作薄中Sheet页(工作表)名集合 04./// </summary> 05./// <param name="excelFile">Excel文件名及路径,EG:C:\Users\JK\Desktop\导入测试.xls</param> 06./// <returns>Sheet页名称集合<

如何知道一个工作簿中有多少个工作表?

方法一. (1).打开"工具"菜单,选择"宏""Visual Basic 编辑器"命令,如图所示: (2).在打开的窗口中选择"插入"→"模块"命令,如图所示: (3)输入如下内容,如图所示: Sub sheetcount() Dim num As Integer num=ThisWorkbook.Sheets.Count Sheets(1).Select Cells(1,1)=num End Sub (4

C# 获取Excel工作薄中Sheet页(工作表)名集合

#region 获取Excel工作薄中Sheet页(工作表)名集合 /// <summary> /// 获取Excel工作薄中Sheet页(工作表)名集合 /// </summary> /// <param name="excelFile">Excel文件名及路径,EG:C:\Users\JK\Desktop\导入测试.xls</param> /// <returns>Sheet页名称集合</returns> pr

启动多个工作线程-下载图片一般都是单任务伦循。但是如果每次下载图片都开启一个工作线程会导致什么?

问题描述 下载图片一般都是单任务伦循.但是如果每次下载图片都开启一个工作线程会导致什么? 如题.工作线程起多了会导致什么?会不会导致内存益出.然后崩了? 解决方案 Android 一个下载任务分为多个线程下载unity 线程下载图片 解决方案二: 首先无限制创建线程是不可能的~不同的系统给的限制可能不同:有的是1M,有的更多~但绝不会出现分配线程过多导致死机的情形~ 解决方案三: 如果需要下载多个图片,用一个线程的多首先代码编写会方便一些,当然你把线程包装成方法,倒着没多大差别.接下来就讨论多线

WF中,一个工作流程已经启动,并持久化后,修改工作流程,出现错误

问题描述 WF中,一个工作流程已经启动,并持久化后,修改工作流程,再次打开工作流时,出现错误...错误信息:ID为42的对象实现IObjectReference接口,但无法解析该接口的全部依赖项.这可能是因为IObjectReference的两个实例具有彼此依赖性.请问有什么办法解决啊?

类别-菜鸟求助一个工作中的触发器的编写

问题描述 菜鸟求助一个工作中的触发器的编写 员工表a 字段 姓名 部门id 人员类别 岗位 薪资表b 字段 姓名 人员类别 部门id 基本工资 人员类别:正式员工 试用员工 外派员工: 岗位:经理 主管 普工: 1.有新人增加时,选好人员类别和岗位自动分配基本工资: 2.人员类别变更,或是岗位变更,要更改基本工资: 备注:正式员工:经理5000,主管3500,普工3000: 试用员工:经理3500,主管2500,普工2000 问:要写几个触发器,,,写一个,怎么写::::求助啊! 解决方案 写一

“让工作快乐”本身就是一个伪命题

工作为什么要快乐?不快乐的原因很多,工作繁重.压力大;工作无聊.不喜欢;待遇不够好等等.一千个人有一万个理由.但是反过来,让工作快乐的理由却相当简单--1.工作得到认同,得到众人的鼓励和肯定;2.愉快的沟通协作. 令人遗憾的是,几乎所有的协作办公应用都用来解决第二个问题--有效的沟通和协作.但似乎也解决的不够完美--不够愉快且愈发痛苦.而且这种趋势越来越明显:工具愈发的强大.丰富,可作为使用者来说,却也越来越缺乏使用动力. 很多公司或团队在使用一款协同办公软件的过程中,随着时间的推移和项目任务繁

做百度竞价最重要的一个工作就是关键词的调整

摘要: 做百度竞价最重要的一个工作就是关键词的调整,只有不断的寻找到高质量的关键词,下掉低转化的关键词,才会提升百度竞价的转化率,你的产出投入比才会更高.关于如何进行关键 做百度竞价最重要的一个工作就是关键词的调整,只有不断的寻找到高质量的关键词,下掉低转化的关键词,才会提升百度竞价的转化率,你的产出投入比才会更高.关于如何进行关键词的调整,笔者这里介绍一下如何用精准匹配的模式来做关键词的筛选. 所谓的精准匹配,就是说当用户搜索的关键词与你的百度账户设置的关键词完全匹配的时候,广告才会被展示出来