ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 不同文件夹下相同类型工作表数据汇总

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-12-30 09:27 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
zhaogang1960 发表于 2013-12-29 23:32
修改如下:

谢谢大版主

{:soso_e134:}{:soso_e134:}{:soso_e134:}

大部分都看不懂,可否帮忙写几句注释提示下给我这个零基础的!{:soso_e117:}

多谢了!

TA的精华主题

TA的得分主题

发表于 2013-12-30 10:10 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
beleqing 发表于 2013-12-30 09:27
谢谢大版主

这个程序涉及知识比较多,没有基础是看不懂的,建议学习一个VBA知识
  1. Sub 宏1()
  2.     Dim cnn As Object, SQL$, Mypath$, MyFile$, m&, n&, t$
  3.     Dim Fso As Object, arrf$(), mf&, sFileType$, j&
  4.     Application.ScreenUpdating = False
  5.     sFileType = "*.xlsx"
  6.     Set Fso = CreateObject("Scripting.FileSystemObject")
  7.     Call GetFiles(ThisWorkbook.Path, sFileType, Fso, arrf, mf)
  8.     ActiveSheet.UsedRange.Offset(1).ClearContents
  9.     Set cnn = CreateObject("ADODB.Connection")
  10.     cnn.Open "Provider=Microsoft.Ace.OLEDB.12.0;Extended Properties=Excel 12.0;Data Source=" & arrf(1) '连接第一个文件
  11.    
  12.     For j = 1 To mf '逐个文件
  13.         m = m + 1
  14.         If m > 49 Then '49个工作表复制一次数据
  15.             Range("a" & Rows.Count).End(xlUp).Offset(1).CopyFromRecordset cnn.Execute(SQL) '复制数据
  16.             m = 1
  17.             SQL = ""
  18.         End If
  19.         If Len(SQL) Then SQL = SQL & " union all "
  20.         SQL = SQL & "select * from [Excel 12.0;Database=" & arrf(j) & "].[Sheet1$]" '联合查询语句
  21.     Next
  22.     If Len(SQL) Then Range("a" & Rows.Count).End(xlUp).Offset(1).CopyFromRecordset cnn.Execute(SQL) '最后再检查一个是否还有数据
  23.     cnn.Close
  24.     Set cnn = Nothing
  25.     Set Fso = Nothing
  26.     Application.ScreenUpdating = True
  27. End Sub

  28. Private Sub GetFiles(ByVal sPath$, ByVal sFileType$, ByRef Fso As Object, ByRef arrf$(), ByRef mf&) '搜索所有子文件夹中所有文件子程序
  29.     Dim Folder As Object
  30.     Dim SubFolder As Object
  31.     Dim File As Object
  32.     Set Folder = Fso.GetFolder(sPath)
  33.     If sPath <> ThisWorkbook.Path Then
  34.         For Each File In Folder.Files
  35.             If File.Name Like sFileType Then
  36.                 mf = mf + 1
  37.                 ReDim Preserve arrf(1 To mf)
  38.                 arrf(mf) = sPath & "" & File.Name
  39.             End If
  40.         Next
  41.     End If
  42.     If Folder.SubFolders.Count > 0 Then
  43.         For Each SubFolder In Folder.SubFolders
  44.             Call GetFiles(SubFolder.Path, sFileType, Fso, arrf, mf)
  45.         Next
  46.     End If
  47.     Set Folder = Nothing
  48.     Set File = Nothing
  49.     Set SubFolder = Nothing
  50. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-12-30 10:28 | 显示全部楼层
zhaogang1960 发表于 2013-12-30 10:10
这个程序涉及知识比较多,没有基础是看不懂的,建议学习一个VBA知识

OK, thank you very much!

I will need a bit of time to read it through.

Thank you for you help!!
头像被屏蔽

TA的精华主题

TA的得分主题

发表于 2013-12-30 13:49 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-12-30 16:41 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
zhaogang1960 发表于 2013-12-30 10:10
这个程序涉及知识比较多,没有基础是看不懂的,建议学习一个VBA知识

大版主,可否帮忙大概列一下,我想明白这些代码的话需要哪些基础知识?需要什么书?

我在本帖子举的例子是简单的自己编的,我们实际工作里远比这个复杂,但是道理是一样的。

我想学习下,但是学太多别的知识的话时间又不够。谢谢你!

TA的精华主题

TA的得分主题

发表于 2013-12-30 16:52 | 显示全部楼层
beleqing 发表于 2013-12-30 16:41
大版主,可否帮忙大概列一下,我想明白这些代码的话需要哪些基础知识?需要什么书?

我在本帖子举的例 ...

这个题目不复杂,仅复制数据,不需要修改
但要确保:
一、保证数据源工作表名都是Sheet1
二、数据源格式不要再发生变化

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-12-31 08:46 | 显示全部楼层
zhaogang1960 发表于 2013-12-30 16:52
这个题目不复杂,仅复制数据,不需要修改
但要确保:
一、保证数据源工作表名都是Sheet1

大版主,是不是可以这样想,要能灵活应用这些代码,就差不多需要学习所有的VBA知识?

TA的精华主题

TA的得分主题

发表于 2013-12-31 11:22 | 显示全部楼层
beleqing 发表于 2013-12-31 08:46
大版主,是不是可以这样想,要能灵活应用这些代码,就差不多需要学习所有的VBA知识?

不需要,涉及知识点如下:
1、Fso文件系统对象
2、ADO数据库语言
3、数组知识

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-12-31 11:30 | 显示全部楼层
zhaogang1960 发表于 2013-12-31 11:22
不需要,涉及知识点如下:
1、Fso文件系统对象
2、ADO数据库语言

谢谢!我学习一下你发的知识点!

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-1-9 13:07 | 显示全部楼层
zhaogang1960 发表于 2013-12-31 11:22
不需要,涉及知识点如下:
1、Fso文件系统对象
2、ADO数据库语言

SQL = SQL & "select * from [Excel 12.0;Database=" & arrf(j) & "].[Sheet1$]"

高手请问下哈,你这条语句的功能是合并所有excel的sheet1的内容

如果改为合并所有excel的工作簿‘汇总’的A1:C7怎么修改?

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

本版积分规则

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

GMT+8, 2025-1-12 18:53 , Processed in 0.032849 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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