设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 7274|回复: 10
打印 上一主题 下一主题

[模块/函数] [分享]VBA加快Excel数据导入速度

[复制链接]
1#
发表于 2012-8-22 15:17:23 | 显示全部楼层
Benjamin_luk 发表于 2012-8-22 14:12
但是出现问题了,
在用TARGETR进行赋值,提示错误"需要对象"
我想是因为EXCEL已关闭的原因, 那就将TARGETR转 ...

方法是不错。不过我怎么没有看见1楼和2楼的代码中给DataK对象赋值的语句?如果是这样的话,三楼的代码就多余了,应该直接在给rs的字段赋值时用TargetR应该就可以了。不知道是不是我老眼昏花了?
2#
发表于 2012-8-22 16:26:33 | 显示全部楼层
本帖最后由 todaynew 于 2012-8-22 16:50 编辑
Benjamin_luk 发表于 2012-8-22 16:13
这是为了给大家有一个对比.
一楼是直接用TARGETR赋值, 再写入RS, 然后关闭XLS, 速度太慢
二楼是XLS数 ...


我是问1楼和2楼的代码中的
rs.Fields(1) = DataK(J, 1)是不是写错了,而是rs.Fields(1) = TargetR(J, 1)。

如果是这样的话,三楼的代码应该不要,只需要将二楼的代码修改一下就可以运行了。按说数据从Excel表读到TargetR变量中后,关闭Excel对象不会释放TargetR的数据。


我试了一下,不用另外一个变量过渡。你的问题是变量用错了,呵呵。
3#
发表于 2012-8-23 15:54:33 | 显示全部楼层
Benjamin_luk 发表于 2012-8-22 17:18
确定是写错, 是用最后的代码COPY过来的,忘记修改了.
我这里测试2楼代码时,确实是关闭EXCEL后, TARGETR ...

按你的思路,我试了一下读取Word中的table数据,大体上也可以,不过读出来的是一个有规律的字符串,需要用split分解为二维数组,总体上速度也是很快的。
4#
发表于 2012-8-24 11:58:17 | 显示全部楼层
Benjamin_luk 发表于 2012-8-23 17:38
确实有点不明白, 将EXCEL数据转给变量后,
不关闭EXCEL的速度为什么会慢,
数据传递后,EXCEL按理也不需要 ...

可能是在对象中搜索元素比在数组中搜索元素计算要复杂吧?

此外,Set TargetR = .Range("A1:I" & I) 语句应该是设置一个对象,而DataK = TargetR似乎是将对象元素的值转换为数组赋值给了DataK。由此可不必设置TargetR对象,而直接写为DataK=.Range("A1:I" & I),这样关闭Excel表对象,DataK数组并不受影响。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-5 21:31 , Processed in 0.084163 second(s), 26 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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