ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 用ado导入多个工作簿的问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-7-28 14:34 | 显示全部楼层 |阅读模式
本帖最后由 ylj518 于 2024-7-28 14:38 编辑

提示找不到表,不知哪里错了,请高手指点!
QQ截图20240728141437.png
1.png

ado导入.zip

45.9 KB, 下载次数: 14

TA的精华主题

TA的得分主题

发表于 2024-7-28 14:48 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
fi是什么?

TA的精华主题

TA的得分主题

发表于 2024-7-28 15:09 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-7-28 16:42 | 显示全部楼层
  1. Sub adodl()
  2. Dim StrSQL$, Cn As Object, x%
  3. Dim fileName, strTable, strPath
  4. Set Cn = CreateObject("ADODB.connection")
  5. Sheet16.Range("a:g").ClearContents
  6. Sheet16.Range("a1:f1") = Array("班级", "考号", "性别", "语文", "数学", "英语")
  7. strPath = ThisWorkbook.Path & ""
  8. fileName = Dir(strPath & "*.xlsx")
  9. x = 2
  10. Do While fileName <> ""
  11.   If fileName <> "汇总.xlsm" Then
  12.     Cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties='Excel 12.0;hdr=no;imex=1';Data Source=" & strPath & fileName
  13.     StrSQL = "select * from .[Sheet1$a2:f]"
  14.     Sheet16.Range("a" & x).CopyFromRecordset Cn.Execute(StrSQL)
  15.     x = Sheet16.Cells(Rows.Count, 1).End(xlUp).Row + 1
  16.     Cn.Close
  17.   End If
  18.   fileName = Dir()
  19. Loop
  20. Set Cn = Nothing
  21. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2024-7-28 16:44 | 显示全部楼层
ado导入1.rar (46.02 KB, 下载次数: 10)

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-7-28 17:16 | 显示全部楼层
练习了一下,仅供参考。。。。
image.png

汇总.zip

17.02 KB, 下载次数: 13

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-7-28 19:31 | 显示全部楼层
非常感谢!abc123281中 StrSQL = "select * from [Sheet1$a2:f]",改成 StrSQL = "select * from [a2:f]",运行也很正常。quqiyuan中注释掉这句s = Replace(rst.Fields(2).Value, "'", ""),也可正常运行。为什么呢?

TA的精华主题

TA的得分主题

发表于 2024-7-28 20:29 | 显示全部楼层
ylj518 发表于 2024-7-28 19:31
非常感谢!abc123281中 StrSQL = "select * from [Sheet1$a2:f]",改成 StrSQL = "select * from [a2:f]" ...

测试了一下,默认是第一个工作表,所以那样写没什么问题。甚至前面的set rst那个都可以不要。如果需要更多的工作表那就读取不到了,需要多写些代码了。

TA的精华主题

TA的得分主题

发表于 2024-7-28 20:36 | 显示全部楼层
简单合并,copy法。

ado导入.zip

54.05 KB, 下载次数: 10

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-7-28 20:37 | 显示全部楼层
参与一下。。。

  1. Sub ykcbf()  '//2024.7.28
  2.     Application.ScreenUpdating = False
  3.     Application.DisplayAlerts = False
  4.     Set fso = CreateObject("scripting.filesystemobject")
  5.     Set sh = ThisWorkbook.Sheets("合并")
  6.     sh.UsedRange.Clear
  7.     p = ThisWorkbook.Path & ""
  8.     For Each f In fso.GetFolder(p).Files
  9.         If InStr(f.Name, ThisWorkbook.Name) = 0 Then
  10.             fn = fso.GetBaseName(f)
  11.             m = m + 1
  12.             Set wb = Workbooks.Open(f, 0)
  13.             With wb.Sheets(1)
  14.                 r = IIf(m = 1, 1, sh.Cells(Rows.Count, 1).End(xlUp).Offset(1).Row)
  15.                 .UsedRange.Offset(IIf(m = 1, 0, 1)).Copy sh.Cells(r, 1)
  16.                 wb.Close 0
  17.             End With
  18.         End If
  19.     Next f
  20.     Application.ScreenUpdating = True
  21.     MsgBox "汇总完毕!"
  22. End Sub

复制代码


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

本版积分规则

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

GMT+8, 2024-11-18 06:21 , Processed in 0.052490 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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