ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 同一文件夹中部分工作簿的同名工作表进行汇总在一张工作表上

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-5-6 16:22 | 显示全部楼层 |阅读模式
下面是一位老师给我写的汇总工作表的代码,但只适用同一文件夹中除汇总工作簿外的其他所有工作簿都含需要汇总的工作表的工作簿,如果含其他不相关的工作簿,就会出现“运行错误9,下标越界”的错误提示,哪位老师可帮我修改一下,可以使同一文件夹中即使含不相关的工作表也可以对其他需要的工作表进行合并汇总,最好能麻烦给我解释一个代码的含义,要求有点高了,谢谢

  • Sub 导入数据()
  • Dim arr, brr(1 To 1000, 1 To 7)
  • Dim wb As Workbook
  • Dim mypath$, myname$
  • Application.DisplayAlerts = False
  • Application.ScreenUpdating = False
  • mypath = ThisWorkbook.Path & ""
  • myname = Dir(mypath & "*.xl*")
  • Do While myname <> ""
  •   If myname <> ThisWorkbook.Name Then
  •   Set wb = GetObject(mypath & myname)
  •     With wb
  •       With .Worksheets("通话1")
  •         arr = .Range("a1").CurrentRegion
  •         For i = 2 To UBound(arr)
  •           n = n + 1
  •           For j = 1 To 7
  •             brr(n, j) = arr(i, j)
  •           Next
  •         Next
  •       End With
  •      .Close False
  •     End With
  •   End If
  • myname = Dir()
  • Loop
  • With Worksheets("通话1汇总")
  •   .UsedRange.Offset(1).ClearContents
  •   .Range("a2").Resize(n, 7) = brr
  • End With
  • Application.DisplayAlerts = True
  • Application.ScreenUpdating = True
  • MsgBox "导入数据完成!"
  • End Sub

汇总通话123.zip

70.14 KB, 下载次数: 84

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-5-6 21:52 | 显示全部楼层
呵呵  很巧  我路过  
    代码是我写的   想要修改  你得上传原始的附件  不相关的工作簿是哪些  也放到里面

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-5-6 22:11 | 显示全部楼层
谢谢,附件中7月4日的工作簿是不相关的,其他三个都有通话1工作表,我要合并通话1工作表数据
头像被屏蔽

TA的精华主题

TA的得分主题

发表于 2018-5-7 17:57 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-5-7 21:23 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
首先感谢老师提供艾敦制表神器,但对我可能不适合,因为我每个工作簿下有几十个工作表,一共有几十个工作簿,先汇总在一个工作簿中肯定不现实,所以最好是用vab语句

TA的精华主题

TA的得分主题

发表于 2018-5-7 23:30 | 显示全部楼层
楼主新同学好
   目前的代码汇总的都是各个工作表“通话1”的内容  看下面的代码
  With .Worksheets("通话1")
        arr = .Range("a1").CurrentRegion
  如果会发生错误,请在代码 mypath = ThisWorkbook.Path & "\" 前面加上这句
    on error resume next

TA的精华主题

TA的得分主题

发表于 2018-5-8 07:14 | 显示全部楼层
头像被屏蔽

TA的精华主题

TA的得分主题

发表于 2018-5-8 15:39 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-5-8 18:20 | 显示全部楼层
cspostwjq 发表于 2018-5-8 15:39
你合并时应该每个工作薄只取一个表吧

在汇总工作簿中有很多工作表,其中有几张工作表要从其他工作簿中的部分工作簿中选取需要的工作表进行汇总,比如说有100个工作簿,其中30个有通话记录1号工作表,那我汇总工作簿中就要将那30个通话记录1号选取出来进行汇总

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-5-8 18:22 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
abc123281 发表于 2018-5-7 23:30
楼主新同学好
   目前的代码汇总的都是各个工作表“通话1”的内容  看下面的代码
  With .Worksheets("通 ...

首先感谢大神老师,基本上成功,大多数汇总表正确,只是有些汇总出来后发现有些小问题,就是一些同样符合条件的工作表没有汇总到,有些是汇总出来出现非法符,我不知道是不是因为源文件格式不对的问题
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-5-8 16:32 , Processed in 0.048821 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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