ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 如何合并不同工作簿中的同名工作表

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2011-8-25 12:25 | 显示全部楼层 |阅读模式
求代码:如何合并不同工作簿中的某一同名工作表?
如book1中有sheet1、sheet2、sheet3三个工作表
    book2中有sheet1、sheet2、sheet3、sheet4四个工作表
而我只想复制book1与book2同名三个表(sheet1、sheet2、sheet3)中的其中一个同名的工作表如sheet2;或想复制同名中的某二个同名工作表到当前工作簿,

TA的精华主题

TA的得分主题

发表于 2011-8-25 12:28 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
多工作簿汇总搜索一下。或上个附件。。。

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-8-25 14:42 | 显示全部楼层
先谢谢大家,现上传附件,想通过达到2种效果,上网搜了好多,只有搜到合并各工作簿的第一个工作表或所有工作表的,而我实际上只需要合并某一指定的同名工作表,所以才又在此发此类求助,麻烦大家了,谢谢!

数据.rar

14.39 KB, 下载次数: 512

TA的精华主题

TA的得分主题

发表于 2011-8-25 12:57 | 显示全部楼层
上个附件或者截图上来看看

TA的精华主题

TA的得分主题

发表于 2011-8-25 16:14 | 显示全部楼层
短信收到,没有看懂,试试看吧:
Sub Macro1()
    Dim MyPath$, MyName$, sh As Worksheet, d As Object, r&
    Set d = CreateObject("scripting.dictionary")
    MyPath = ThisWorkbook.Path & "\"
    MyName = Dir(MyPath & "*.xls")
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    For Each sh In Sheets
        If sh.Name <> ActiveSheet.Name Then sh.Delete
    Next
    Do While MyName <> ""
        If MyName <> ThisWorkbook.Name Then
            With GetObject(MyPath & MyName)
                For Each sh In .Sheets
                    If IsSheetEmpty = IsEmpty(sh.UsedRange) Then
                        If Not d.Exists(sh.Name) Then
                            sh.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
                            Set d(sh.Name) = ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
                        Else
                            With d(sh.Name)
                                r = .UsedRange.Row + .UsedRange.Rows.Count + 2
                                sh.UsedRange.Copy .Cells(r, 1)
                            End With
                        End If
                    End If
                Next
                .Close False
            End With
        End If
        MyName = Dir
    Loop
    Sheets(1).Activate
    Application.ScreenUpdating = True
End Sub

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-8-25 17:24 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
谢谢赵老师!但上述代码是实现各工作簿中所有同名工作表的合并,我想要的是只合并其中某一特定同名工作表,比如我只想要做到各工作簿中工作表名称=sheet1(或者sheet2)的合并就行了,即达到上传附件中的《合并效果1》中的效果就行了,也就是说只需要把各工作簿中的同名为sheet1的工作表合并即可,而不合并sheet2、sheet3同名工作表。不知这样表述是否理解,谢谢!

TA的精华主题

TA的得分主题

发表于 2011-8-25 17:31 | 显示全部楼层
huazai688 发表于 2011-8-25 17:24
谢谢赵老师!但上述代码是实现各工作簿中所有同名工作表的合并,我想要的是只合并其中某一特定同名工作表, ...

全部合并了不是也好么,你想要哪张就哪张。。。

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-8-25 17:56 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
我上传的只是测试表,实际工作中每个工作簿中有很多张工作表,如果都合并的话,还要把不需要的删除,太麻烦了

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-8-25 17:57 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Sub combo()
Dim Wk As Workbook, Sht As Worksheet, n As Integer, MyPath, MyName
Application.ScreenUpdating = False
Application.EnableEvents = False
n = 1
MyPath = ThisWorkbook.Path & "\"   '指定路径
MyName = Dir(MyPath & "\" & "*.xls")    '寻找第一项
Do While MyName <> ""    '开始循环
If MyName <> ThisWorkbook.Name Then
Set Wk = Workbooks.Open(MyPath & "\" & MyName)
Wk.Sheets(1).Copy after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) '此处只插个第一个sheet
ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Name = Mid(MyName, 1, Len(MyName) - 4) '重新命名sheet
'For Each Sht In Wk.Sheets '多个sheet
'Sht.Name = Format(n, "000″)
'n = n + 1
'Next
Wk.Close False
End If
MyName = Dir    '查找下一个
Loop
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub

上述是合并各工作簿第一张表的代码,不知道哪位高手可以将其修改成我需要的复制指定工作表的代码?

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-8-25 18:45 | 显示全部楼层
对了,合并工作表时最好是数值性粘贴方式,因为实际工作中需要合并的工作表存在公式和宏,如果是原格式带公式复制的话,不仅影响速度,又会造成跨工作表引用。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-17 07:26 , Processed in 0.040887 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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