ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 相同名工作表分别合并模板(不复制含有函数公式的结尾空行)

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-2-20 17:55 | 显示全部楼层 |阅读模式
求助老师:多工作簿相同名称工作表分别合并                 问题:不复制结尾含有函数公式的空行,代码如何修改呀!


相同名工作表分别合并模板(不复制含有函数公式的结尾空行).zip

1.67 MB, 下载次数: 4

不复制结尾含公式空行

TA的精华主题

TA的得分主题

发表于 2018-2-20 18:42 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
呵呵   这种汇总很简单  但是你的工作表有保护和有隐藏的工作表
        所以  无法帮助
       只有你自己弄弄了

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-2-20 18:50 | 显示全部楼层
如何改呀

Sub 分别对应表名合并()
    Dim MyPath$, Myname$, sh As Worksheet, m&, d As Object
     With Application.FileDialog(msoFileDialogFolderPicker)
     .InitialFileName = ThisWorkbook.Path & "\"
     If .Show = False Then Exit Sub
     MyPath = .SelectedItems(1) & "\"
End With
Application.ScreenUpdating = False
Set d = CreateObject("scripting.dictionary")
For Each sh In Sheets
    Set d(sh.Name) = sh
    sh.UsedRange.Offset(3).Clear
Next
FilePath = Getname(MyPath)
    For v = 0 To UBound(FilePath)
    Set wb = Workbooks.Open(FilePath(v))
        For Each sh In wb.Sheets
        If sh.Name <> ThisWorkbook.Name Then
                m = m + 1
                    If d.Exists(sh.Name) Then
                        If m <= 1 Then
                            sh.UsedRange.Copy d(sh.Name).[A1]
                        Else
                            sh.UsedRange.Offset(0).Copy d(sh.Name).Range("A" & Rows.Count).End(xlUp).Offset(1)
                        End If
                    End If
                End If
            Next
        wb.Close False
    Next
    Application.ScreenUpdating = True
End Sub

Function Getname(lj As String)
Dim Myname, Dic, Did, i, T, a, TT, MyfileName
Set Dic = CreateObject("scripting.dictionary")
Set Did = CreateObject("scripting.dictionary")
Dic.Add (lj), ""
i = 0
Do While i < Dic.Count
    ke = Dic.keys
        Myname = Dir(ke(i), vbDirectory)
            Do While Myname <> ""
                If Myname <> "." And Myname <> ".." Then
                    If (GetAttr(ke(i) & Myname) And vbDirectory) = vbDirectory Then
                        Dic.Add (ke(i) & Myname & "\"), ""
                    End If
                End If
                Myname = Dir
            Loop
    i = i + 1
Loop
For Each ke In Dic.keys
    MyfileName = Dir(ke & "*.xls*")
        Do While MyfileName <> ""
            If MyfileName <> ThisWorkbook.Name Then Did.Add (ke & MyfileName), ""
            MyfileName = Dir
        Loop
    Next
Getname = Did.keys
End Function

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-2-20 18:59 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
abc123281 发表于 2018-2-20 18:42
呵呵   这种汇总很简单  但是你的工作表有保护和有隐藏的工作表
        所以  无法帮助
       只有你自 ...

附件中以下代码运行,合并结果有很多空行(是因为子表结尾空行中包含函数公式),怎样修改呢

Sub 分别对应表名合并()
    Dim MyPath$, Myname$, sh As Worksheet, m&, d As Object
     With Application.FileDialog(msoFileDialogFolderPicker)
     .InitialFileName = ThisWorkbook.Path & "\"
     If .Show = False Then Exit Sub
     MyPath = .SelectedItems(1) & "\"
End With
Application.ScreenUpdating = False
Set d = CreateObject("scripting.dictionary")
For Each sh In Sheets
    Set d(sh.Name) = sh
    sh.UsedRange.Offset(3).Clear
Next
FilePath = Getname(MyPath)
    For v = 0 To UBound(FilePath)
    Set wb = Workbooks.Open(FilePath(v))
        For Each sh In wb.Sheets
        If sh.Name <> ThisWorkbook.Name Then
                m = m + 1
                    If d.Exists(sh.Name) Then
                        If m <= 1 Then
                            sh.UsedRange.Copy d(sh.Name).[A1]
                        Else
                            sh.UsedRange.Offset(0).Copy d(sh.Name).Range("A" & Rows.Count).End(xlUp).Offset(1)
                        End If
                    End If
                End If
            Next
        wb.Close False
    Next
    Application.ScreenUpdating = True
End Sub

Function Getname(lj As String)
Dim Myname, Dic, Did, i, T, a, TT, MyfileName
Set Dic = CreateObject("scripting.dictionary")
Set Did = CreateObject("scripting.dictionary")
Dic.Add (lj), ""
i = 0
Do While i < Dic.Count
    ke = Dic.keys
        Myname = Dir(ke(i), vbDirectory)
            Do While Myname <> ""
                If Myname <> "." And Myname <> ".." Then
                    If (GetAttr(ke(i) & Myname) And vbDirectory) = vbDirectory Then
                        Dic.Add (ke(i) & Myname & "\"), ""
                    End If
                End If
                Myname = Dir
            Loop
    i = i + 1
Loop
For Each ke In Dic.keys
    MyfileName = Dir(ke & "*.xls*")
        Do While MyfileName <> ""
            If MyfileName <> ThisWorkbook.Name Then Did.Add (ke & MyfileName), ""
            MyfileName = Dir
        Loop
    Next
Getname = Did.keys
End Function

TA的精华主题

TA的得分主题

发表于 2018-2-20 19:59 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
呵呵  我写了一个    仅供参考




相同名工作表分别合并模板(不复制含有函数公式的结尾空行).rar (1003.27 KB, 下载次数: 17)

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-2-21 03:13 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
abc123281 发表于 2018-2-20 19:59
呵呵  我写了一个    仅供参考

非常感谢,就要这效果,问题得到解决,运行流畅!!!

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-2-21 08:55 | 显示全部楼层
abc123281 发表于 2018-2-20 19:59
呵呵  我写了一个    仅供参考

写的代码非常好用,麻烦老师:如果分别相同名工作表的第五行,在老师的代码基础上怎样改呀?

TA的精华主题

TA的得分主题

发表于 2018-2-21 09:44 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-2-21 10:38 | 显示全部楼层
按相同工作表名,将各个子表中的第5行提取

相同名工作表分别提取各子表第5行模板(按相同工作表名,将各个子表中的第5行提取).zip

1.76 MB, 下载次数: 4

按相同工作表名,将各个子表中的第5行提取

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-2-21 11:41 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
abc123281 发表于 2018-2-21 09:44
哦   不明白你的意思    能不能讲清楚一些

麻烦您:按相同工作表名,将各个子表中的第5行提取
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

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

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

GMT+8, 2024-4-19 15:37 , Processed in 0.045941 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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