芯友网xin1234.com

VBA如何实现从Excel指定区域导入数据?



0123456789
VBA如何实现从Excel指定区域导入数据?
0123456789
从Excel指定区域导入数据
比如,D:\数据源.xls的sheet1中的A5:G100
0123456789
找不到啊
全表导入好办
0123456789
部分导入,只导入指定区域,不知道怎么搞了
滋阴壮阳冬瓜汤
无非就是后面指定表名和range区域
0123456789
就是不知道怎么搞嘛
打开Excel,遍历指定区域单元格,逐个写入,效率太低
5千多行记录,需要2分钟
0123456789
小宝
容易啊
王子
select * from [sheet1$A5:g100] in "文件路径"
小宝
0123456789

非常感谢
我先试一下
王子
帮助里面其实都有
0123456789
王子
小宝
用TransferSpreadsheet 方法也可以 
王子
嗯,我一直用SQL导的
0123456789
@小宝 用TransferSpreadsheet方法怎么搞,导入指定区域
小宝
导出可以指定,导入不能指定
0123456789
蜂蜜匠
小宝
导入用sql语句
0123456789
导入指定区域,只能用SQL语句了?
好吧
谢谢
小宝
或者用Excel Application 对象
0123456789
Excel Application,打开Excel,遍历指定区域单元格,逐个写入,是不是?
小宝
王子
读区域进数组
然后遍历数组
小宝
嗯,这样更快一点
0123456789
滋阴壮阳冬瓜汤
读入clipboard,比数组快
王子
小宝
clipboard,不还要先打开Excel Application
0123456789
clipboard为何物?
王子
clipboard还要拆分字符么
0123456789
王子
剪贴板
小宝
读clipboard,还是得到数组吧
王子
忘了
滋阴壮阳冬瓜汤
不是,而是格式连数据都复制过去
小宝
直接sql导入是最快的,但有可能不准确
王子
直接其实贴不快的
恭喜白菜
滋阴壮阳冬瓜汤
只为区域数据本来就不大
王子
sql导100万行其实挺快的
0123456789

那我用SQL好了
王子
打开不经济,开还要一会儿
小宝
sql有一点陷阱
王子
数据类型是吧
小宝
对,文本和数字
0123456789
【博士】小宝(377922812)  10:56:04
sql有一点陷阱

怎么说呢

小宝
有时无法分清一列的数据类型
0123456789
王子
那就打开后,改格式再导
0123456789
有些地方,本应是空的,却来了个"  "
小宝
不是这个意思
王子
不是这个,
0123456789
看起来是数字,实际是文本,这种情况是吗
王子
比如前几行是数字,后面有文本
它认为这列是数字
文本就导不进来了
0123456789
小宝
王子
这种情况,改了数字格式,然后分列一下把整列转成文本就可以解决的
0123456789
但我要的是数值呢
主席
导入excel很麻烦,尤其是用了数字外键的表格。
导入中又容易出错,大量的数据,其中有一个单元格出错,都可能导致导入失败,却又不知道原因在哪里。
王子
还行,我以前写过一个通用的程序
改天翻出来
0123456789
现在我是遍历区域,逐个检查处理后写入
主席
导入一直没很理想的方案
遍历写入。就是速度慢
尤其是远程写入时,很不理想
王子
遍历比较慢
主席
导入指定单元区域时,更容易出错。里面可能有合并单元格
王子
打开,选取所需要的列,转数字格式,另存,然后导
主席
导入时,大家对外键怎么处理的?
滋阴壮阳冬瓜汤
因为office描述数据是有统一格式的,所以写入clipboard,再读出,比数组快。
王子
给个代码看看
滋阴壮阳冬瓜汤
而且是一次性整块复制,肯定比遍历要快
王子
数量有限制的吧
手工复制就有数量限制
滋阴壮阳冬瓜汤
肯定会限制,
数组本身也是有容量限制,而不是无限的
王子
这个我知道
所以尽量不用
主席
怎么限制到多大
王子
不做大规模的
主席
说说外键
滋阴壮阳冬瓜汤
数组必须是连续的内存。事实上很多时候,要分配大块的连续内存,不容易。

相关问题
------分隔线----------------------------
赞助商链接
赞助商链接
推荐内容