ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 求助:如何不打开多个EXCEL文件提取数据存入指定EXCEL文件

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-7-31 17:14 | 显示全部楼层
如果数据在a1:d10,又该怎么处理呢?请教一下,谢谢!

TA的精华主题

TA的得分主题

发表于 2015-11-23 20:31 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
受用了,谢谢楼主和赵老师。

TA的精华主题

TA的得分主题

发表于 2015-11-23 20:42 | 显示全部楼层
在下,在赵老师的代码基础上进行了简要的修改应用,却遇到了难题,烦请高手指点。

在“调阅表”中,按编号调用数据, 根据A列的字段“编号”,  从“数据库”文件中,调用“源”表的数据,  “数据库”工作簿中“源”表 从 H:N列,分别对应到“调阅表”工作簿中的“按编号调用数据”表的 H:N 列,字段也一致,分别为:"参数、数据1,数据2,数据3,数据4,数据5,数据6"。当A列的编号,在数据库有时,则调用对应的 H:N列 数据,没有时,则跳过或填充空值,继续下一个编号。
【注:“数据库”表中,大的有超过50万行的数据量,而且数据库中,A列 编号会经常出现空值现象。需要根据编号,必须能够从中调用8000到1万条左右的数据,进行数据分析,这样才够用。希望高手帮忙修改代码。】
“数据库”工作簿,大约有20到50兆。压缩后,还是很大。附件上传到本站有点问题。已上传到网盘,烦请高手到这下载: [url]http://pan.baidu.com/s/1bndWxeJ[/url]



当代码    s = "[Excel12.0;Database=" & ThisWorkbook.FullName & "].[" &Me.name & "$a1:a300]"  时,代码运行正常,跟源表对比过,调用出来的数据是正确的,如截图中黄色的区域。
但当代码     s = "[Excel 12.0;Database=" &ThisWorkbook.FullName & "].[" & Me.name & "$a1:a10000]"  时,运行虽然也正常。但调用出来的数据,却是错误的。已经没有按正确的  编号 进行调用了。

还有希望将代码放在   模块中 运行,不知道代码要怎么改,这两个问题,请高手帮忙修改。


Private Sub CommandButton1_Click()
    Dim cnn As Object, SQL$, s$, s2$, Mypath$, MyFile$, i&
    Set cnn = CreateObject("adodb.connection")
    Mypath = ThisWorkbook.Path & "\"
    MyFile = Mypath & "数据库.xlsm"
    If Dir(MyFile) = "" Then
        MsgBox "找不到数据库!"
    Else
        cnn.Open "Provider=Microsoft.Ace.OLEDB.12.0;Extended Properties='Excel 12.0;hdr=no';Data Source=" & MyFile
        s = "[Excel 12.0;Database=" & ThisWorkbook.FullName & "].[" & Me.name & "$a1:a8000]"    ’出错情况基本在这里,当选定区域为a1:a300时,代码运行正常,数据调用正常,但300改为8000时,就出错了。
        s2 = "SELECT distinct a.f1,a.f8,a.f9,a.f10,a.f11,a.f12,a.f13,a.f14 FROM [源$a2:z1048576] a," & s & " b where a.f1=b.[编号]"
        SQL = "SELECT c.f8,c.f9,c.f10,c.f11,c.f12,c.f13,c.f14 FROM (" & s2 & ") c right join " & s & " d on c.f1=d.[编号]"
        [h2].CopyFromRecordset cnn.Execute(SQL)    ’当 s 设定为区域a1:a300时,是正常的,但超过300时,这里似乎会出现长度溢出的情况,不知道怎么解决
        cnn.Close
        Set cnn = Nothing
    End If
End Sub

TA的精华主题

TA的得分主题

发表于 2015-11-29 08:48 | 显示全部楼层
问题已经得到解决,感谢楼主。

TA的精华主题

TA的得分主题

发表于 2018-8-23 16:45 | 显示全部楼层
SQL = SQL & " union all select * from [Excel 8.0;Database=" & Mypath & MyFile & "].[Sheet1$] where Project is not null"
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-12 16:03 , Processed in 0.018223 second(s), 5 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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