ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 怎样有选择地合并工作簿?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-1-7 11:20 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
有问题请教大家:现在有一个文件夹里含有数百张工作簿,每个工作簿含有一张工作表,并且每个工作簿名称与其内含的工作表名称相同。现需要合并这些工作簿(表)到一个工作簿里,我在网上下载了程序如下:
Sub CombineFiles()


    Dim path           As String
    Dim FileName       As String
    Dim LastCell       As Range
    Dim Wkb            As Workbook
    Dim WS             As Worksheet
    Dim ThisWB         As String


   Dim MyDir As String
    MyDir = ThisWorkbook.path & "\"
    'ChDriveLeft(MyDir, 1) 'find all the excel files
   'ChDir MyDir
    'Match =Dir$("")

    ThisWB = ThisWorkbook.Name
   Application.EnableEvents = False
   Application.ScreenUpdating = False
    path = MyDir
    FileName = Dir(path & "\*.xls", vbNormal)
    Do Until FileName = ""
       If FileName <> ThisWB Then
           Set Wkb = Workbooks.Open(FileName:=path & "\" & FileName)
           For Each WS In Wkb.Worksheets
               Set LastCell = WS.Cells.SpecialCells(xlCellTypeLastCell)
               If LastCell.Value = "" And LastCell.Address = Range("$A$1").Address Then
               Else
                   WS.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
               End If
           Next WS
           Wkb.Close False
       End If
       FileName = Dir()
    Loop
   Application.EnableEvents = True
   Application.ScreenUpdating = True

    Set Wkb = Nothing
    Set LastCell = Nothing

End Sub

        具体做法是:在原文件夹里新建一份工作簿,并且插入模块运行以上程序后,可将原文件夹中的原有工作簿统一合并到新建工作簿中。但是我现在需要有选择性地合并一部分工作簿:如图所示,在新建工作簿的sheet1工作表的e列给出需要合并的工作簿名称,需要根据这份名单将所需要的工作簿合并进来。当然,其中有些需要合并工作簿可能不存在,例如原文件夹中并没有第“15”号和第“99”号工作簿,这时需要跳过它们,继续寻找原文件夹中存在的,并且在合并名单中的工作簿继续合并直至完成。恳请哪位高手帮我看看如何修改以上程序?
怎样有选择地合并工作簿.jpg

怎样有选择地合并工作簿.rar

51.82 KB, 下载次数: 3

TA的精华主题

TA的得分主题

发表于 2015-1-7 11:42 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
修改了一下代码,由于我的系统是2003版本的,没有测试。
  1. Sub 合并工作簿()


  2.     Dim path           As String
  3.     Dim FileName       As String
  4.     Dim LastCell       As Range
  5.     Dim Wkb            As Workbook
  6.     Dim WS             As Worksheet
  7.     Dim ThisWB         As String
  8.    
  9.   
  10.    Dim MyDir As String
  11.     MyDir = ThisWorkbook.path & ""
  12.     'ChDriveLeft(MyDir, 1) 'find all the excel files
  13.    'ChDir MyDir
  14.     'Match =Dir$("")
  15.    
  16.    ThisWB = ThisWorkbook.Name
  17.    Application.EnableEvents = False
  18.    Application.ScreenUpdating = False
  19.     With Worksheets("sheet1")
  20.       r = .Cells(.Rows.Count, 5).End(xlUp).Row
  21.       arr = .Range("e2:e" & r)
  22.     End With
  23.     FileName = Dir(MyDir & "\*.xls", vbNormal)
  24.     For i = 1 To UBound(arr)
  25.       If Dir(MyDir & arr(i, 1) & ".xlsx") <> "" Then
  26.            Set Wkb = Workbooks.Open(FileName:=MyDir & "" & arr(i, 1) & ".xlsx")
  27.            For Each WS In Wkb.Worksheets
  28.                Set LastCell = WS.Cells.SpecialCells(xlCellTypeLastCell)
  29.                If LastCell.Value = "" And LastCell.Address = Range("$A$1").Address Then
  30.                Else
  31.                    WS.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
  32.                End If
  33.            Next WS
  34.            Wkb.Close False
  35.        End If
  36.     Next
  37.    Application.EnableEvents = True
  38.    Application.ScreenUpdating = True
  39.    
  40.     Set Wkb = Nothing
  41.     Set LastCell = Nothing
  42. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-1-7 16:23 | 显示全部楼层
感谢chxw68的热情帮助,给出的这段修改程序确实能在原先的范例文件里顺利运行。
但是有一点我没有说清楚,我要合并的工作簿都是excel2003版本的,并且有些工作簿的命名是采用类似"000002"这种格式,在这种情况下,以上修改的程序就不能运行了。问题没表达清楚就来提问,这完全怪我。现在我把示例文件夹重新只做了一下,麻烦高手有空的话,再帮我看看,谢谢。
注:新的示例文件中,模块1是原始程序,模块2是chxw68给出的修改程序。

怎样有选择地合并工作簿2.rar

36.34 KB, 下载次数: 1

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

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

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

GMT+8, 2024-4-19 01:38 , Processed in 0.039885 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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