ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 846|回复: 8

[求助] 多个工作簿合并

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-4-25 15:34 | 显示全部楼层 |阅读模式
我有很多个工作簿,里面就一张表,其中每个工作簿第1-2行是表头,内容一样的;第三行开始时内容不一样。求段代码,现在需要把这些工作簿合并成一个,不需要计算内容,只要把第三行开始的内容复制到一起就行。附件如下 多工作簿合并.rar (31.57 KB, 下载次数: 6)

TA的精华主题

TA的得分主题

发表于 2018-4-25 15:37 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-4-25 16:43 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Sub 合并工作簿()
    Dim FilesToOpen
    Dim x As Integer

    On Error GoTo ErrHandler
    Application.ScreenUpdating = False

    FilesToOpen = Application.GetOpenFilename _
      (FileFilter:="Microsoft Excel Files (*.xlsx), *.xlsx", _
      MultiSelect:=True, Title:="Files to Merge")

    If TypeName(FilesToOpen) = "Boolean" Then
        MsgBox "No Files were selected"
        GoTo ExitHandler
    End If

    x = 1
    While x <= UBound(FilesToOpen)
        Workbooks.Open Filename:=FilesToOpen(x)
        Sheets().Move After:=ThisWorkbook.Sheets _
          (ThisWorkbook.Sheets.Count)
        x = x + 1
    Wend

ExitHandler:
    Application.ScreenUpdating = True
    Exit Sub

ErrHandler:
    MsgBox Err.Description
    Resume ExitHandler
End Sub


Sub 合并工作表()
For Each st In Worksheets
If st.Name <> ActiveSheet.Name Then st.UsedRange.Offset(0, 0).Copy [a1048576].End(xlUp).Offset(1, 0)
Next
End Sub
Sub 删除其他工作表()
Dim arr()
Application.DisplayAlerts = False
A = ActiveWorkbook.ActiveSheet.Name
icount = Sheets.Count
For i = 1 To icount
  t = Sheets(i).Name
  Sheets(i).Visible = -1
  If t <> A Then
     r = r + 1
     ReDim Preserve arr(1 To r)
   arr(r) = t
  End If
Next
Sheets(arr).Select
ActiveWindow.SelectedSheets.Delete
Application.DisplayAlerts = True

End Sub

Sub 清空本表()
    Cells.Select
    Selection.Clear
    Range("A1").Select
End Sub

Sub 导出()
    Application.ScreenUpdating = False
    Dim str As String
    Cells.Select
    str = Replace(ActiveWorkbook.Name, ".xlsm", "") & Format(Now, "yyyymmdd-hhmmss")
    Selection.Copy
    Workbooks.Add
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    ChDir "C:\桌面"
    ActiveWorkbook.SaveAs Filename:= _
        "C:\桌面\" & str & ".xlsx"
        Range("A1").Select
ActiveWindow.Close
Application.ScreenUpdating = True

End Sub

TA的精华主题

TA的得分主题

发表于 2018-4-25 16:44 | 显示全部楼层
这个表中的东西,部分需要你改.电脑中有需要有文件夹"C:\桌面"

TA的精华主题

TA的得分主题

发表于 2018-4-25 17:07 | 显示全部楼层
ADO合并同夹多薄首表,无字段名

TA的精华主题

TA的得分主题

发表于 2018-4-25 19:02 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Sub gj23w98()
    tms = Timer
    p = ThisWorkbook.Path & "\"
    f = Dir(p & "*.xlsx")
    Application.ScreenUpdating = False
    ReDim brr(1 To 3000, 1 To 22)
    Do While f <> ""
        If f <> ThisWorkbook.Name Then
            n = n + 1
            Set sh = GetObject(p & f).Sheets(1)
            Arr = sh.[a1].CurrentRegion
            Workbooks(f).Close False
            For i = 3 To UBound(Arr)
                m = m + 1
                For j = 1 To 22
                    brr(m, j) = Arr(i, j)
                Next
            Next
        End If
        f = Dir
    Loop
    Set sh = Nothing
    With Sheet1
        .Range("a3:v" & Rows.Count).ClearContents
        .[a3].Resize(m, 22) = brr
    End With
    Application.ScreenUpdating = True
    MsgBox "合并完成!" & "用时:" & Format(Timer - tms, "0.0000") & "秒"
End Sub

TA的精华主题

TA的得分主题

发表于 2018-4-25 19:03 | 显示全部楼层
附件供测试:

多工作簿合并.rar

42.93 KB, 下载次数: 23

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-4-27 15:37 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-4-27 16:09 来自手机 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
学习了!!!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-25 20:15 , Processed in 0.040984 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表