ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 提取同一文件夹中不同工作簿名并提取数据

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-2-20 18:47 | 显示全部楼层 |阅读模式
经常客串帮人做标书,提取同一文件夹中不同工作簿名并提取数据该怎么改代码?
论坛赵老师已经有类似的,但是还不是我想要的结果。因为要删除近1000个子表,能优化速度吗?
具体看附件,如果增加的希望有注释也学习下,谢谢各位


提取同一文件夹中不同工作簿名并提取数据.rar

36.21 KB, 下载次数: 181

附件

TA的精华主题

TA的得分主题

发表于 2017-2-20 19:43 | 显示全部楼层
请参考:
Sub Macro1()
    Dim cnn As Object, SQL$, p$, f$, n&, t$, arr(1 To 65535, 1 To 2)
    Application.ScreenUpdating = False
    ActiveSheet.UsedRange.Offset(1).ClearContents
    Set cnn = CreateObject("ADODB.Connection")
    p = ThisWorkbook.Path & "\"
    f = Dir(p & "*.xls")
    Do While f <> ""
        If f <> ThisWorkbook.Name Then
            n = n + 1
            If n = 1 Then
                cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties='Excel 8.0;hdr=no';Data Source=" & p & f
            Else
                t = "[Excel 8.0;hdr=no;Database=" & p & f & "]."
            End If
            SQL = "select * from " & t & "[汇总表一$b:g] where f1='合计'"
            arr(n, 1) = Replace(f, ".xls", "")
            arr(n, 2) = cnn.Execute(SQL)(5)
        End If
        f = Dir()
    Loop
    Range("a2").Resize(n, 2) = arr
    cnn.Close
    Set cnn = Nothing
    Application.ScreenUpdating = True
End Sub

评分

3

查看全部评分

TA的精华主题

TA的得分主题

发表于 2017-2-21 21:36 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
蓝桥大师 水平高。

我是新手,有个类似的 表。也需要帮忙。可是,新手权限不够啊。这里多攒积分吧

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-2-22 00:02 | 显示全部楼层
本帖最后由 neke@520 于 2017-2-22 00:16 编辑
zhaogang1960 发表于 2017-2-20 19:43
请参考:
Sub Macro1()
    Dim cnn As Object, SQL$, p$, f$, n&, t$, arr(1 To 65535, 1 To 2)


老师,复制这个代码运行后出错了,是什么问题呢?是因为我改了子表名称l的原因吗?
调试错误行.jpg
错误代码.jpg

TA的精华主题

TA的得分主题

发表于 2017-2-22 11:53 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
neke@520 发表于 2017-2-22 00:02
老师,复制这个代码运行后出错了,是什么问题呢?是因为我改了子表名称l的原因吗?

如果所有数据表名都一致,不会出现该错误

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-2-22 16:43 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
zhaogang1960 发表于 2017-2-22 11:53
如果所有数据表名都一致,不会出现该错误

版主,能提取工作簿名称,但是提取不了B列“合计”所在行对应的G列单元格数据。如合计在B13,应还提取G13数据。附件已上传

提数示例.rar

68.14 KB, 下载次数: 48

示例文件

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-2-22 16:46 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
百旺表格 发表于 2017-2-21 21:36
蓝桥大师 水平高。

我是新手,有个类似的 表。也需要帮忙。可是,新手权限不够啊。这里多攒积分吧

多关注本论坛,学习交流下会有很大收货
我以前有个中级号,现在登不了又重新注册的

TA的精华主题

TA的得分主题

发表于 2017-2-22 17:17 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
neke@520 发表于 2017-2-22 16:43
版主,能提取工作簿名称,但是提取不了B列“合计”所在行对应的G列单元格数据。如合计在B13,应还提取G13 ...

合计中间有空格所致,从工作表中复制合计到SQL语句:

提数示例.rar (69.74 KB, 下载次数: 285)

TA的精华主题

TA的得分主题

发表于 2017-2-22 20:46 | 显示全部楼层
各位水平太高了,我抓紧学习

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-2-28 22:14 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
百旺表格 发表于 2017-2-22 20:46
各位水平太高了,我抓紧学习

我水平也不高,以前学习了论坛的书籍《EXCELVBA其实很简单》知道群里很多高手
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-11 16:52 , Processed in 0.027773 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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