ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 求助,将多张工作簿合并到一张工作簿中多个sheet,且每个sheet名称与原工作簿相同?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-4-9 16:34 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
如题,望VBA大神们提供帮助,具体例子在附件中

示例.rar

11.05 KB, 下载次数: 26

TA的精华主题

TA的得分主题

发表于 2020-4-9 16:56 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
问题倒不难,不过你真够懒的。
表中都是空白,都没有数据结构,
从哪复制到哪呢?

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-4-9 17:01 | 显示全部楼层
opel-wong 发表于 2020-4-9 16:56
问题倒不难,不过你真够懒的。
表中都是空白,都没有数据结构,
从哪复制到哪呢?

见笑了,确实表中是空白的。不会VBA,以为合并工作簿只涉及工作簿名称,然后内容会直接引到合并工作簿中呢。其实就是想把多个工作簿(每个工作簿只有第一张表有内容,合并成一张工作簿,之前的工作簿以sheet的形式体现)

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-4-9 17:20 | 显示全部楼层
跟这个示例是一回事,在单个工作簿中已添加具体内容,望大神看一眼

示例2.rar

40.67 KB, 下载次数: 46

TA的精华主题

TA的得分主题

发表于 2020-4-9 17:46 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 c199300220 于 2020-4-9 17:48 编辑

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
            '定义单个文件变量
            Dim vrtSelectedItem As Variant
            
            '定义循环变量
            Dim i As Integer
            i = 1
            
            '开始文件检索
            For Each vrtSelectedItem In .SelectedItems
                '打开被合并工作簿
                Dim tempwb As Workbook
                Set tempwb = Workbooks.Open(vrtSelectedItem)
                 
                '复制工作表
                tempwb.Worksheets(1).Copy Before:=newwb.Worksheets(i)
                 
                '把新工作簿的工作表名字改成被复制工作簿文件名,这儿应用于xls文件,即Excel97-2003的文件,如果是Excel2007,需要改成xlsx
                newwb.Worksheets(i).Name = VBA.Replace(tempwb.Name, ".xls", "")
                 
                '关闭被合并工作簿
                tempwb.Close SaveChanges:=False
                 
                i = i + 1
            Next vrtSelectedItem
        End If
    End With
     
    Set fd = Nothing
End Sub

不知这样行不行

TA的精华主题

TA的得分主题

发表于 2020-4-9 17:57 | 显示全部楼层
账房先声 发表于 2020-4-9 17:20
跟这个示例是一回事,在单个工作簿中已添加具体内容,望大神看一眼

你这是要求直接将目标工作薄中的工作表,复制到合并工作薄中,工作表名称用目标工作薄名,对吧?

TA的精华主题

TA的得分主题

发表于 2020-4-9 18:19 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2020-4-9 21:11 | 显示全部楼层
Sub 工作薄间工作表合并()
    Dim FileOpen
    Dim i As Integer
    FileOpen = Application.GetOpenFilename("Excel文件,*.xls;*.xlsx;*.xslm", MultiSelect:=True) '电脑中选一个或多个工作薄构成数组
    If TypeName(FileOpen) <> "Boolean" Then   '如果选择了至少一个工作薄,就……
        For i = 1 To UBound(FileOpen)
             Workbooks.Open Filename:=FileOpen(i)
Sheets().Move After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)

        Next
   End If
End Sub

TA的精华主题

TA的得分主题

发表于 2021-4-30 15:19 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2022-11-25 14:58 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-20 20:35 , Processed in 0.042251 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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