名称,类型
A,1
B,2
C,3
还有一个excel文件,里面有很多条内容,名称那里是A、B、C等等。出现的顺序和频率是随机的,记录数少的上千条,多的上万条
名称,类型,其他参数...
A,未知,其他参数
C,未知,其他参数
B,未知,其他参数
A,未知,其他参数
C,未知,其他参数
.....
---------------------------------------------------------------------
现在我想用VBS,把EXCEL里的类型这里全部按照txt里指定的标记为相应内容。例如EXCEL名称为A的,记录那里就标为1。如果名称那里在txt中没有,就还是保持为未知。最后结果就像下面这样
名称,类型,其他参数...
A,1,其他参数
C,3,其他参数
B,2,其他参数
A,1,其他参数
C,3,其他参数
.....
之前我是逐个读取EXCEL中的每一条记录,然后每条记录再遍历TXT文件去找是否为相应类型,然后再标记。这样太慢了。TXT中1000条记录,EXCEL中1000条记录,都要5分钟,后面数据多了肯定不行。
所以我想把txt和excel都当成数据库中的表来操作,用SQL语句得到结果,再批量写到EXCEL中。
将文件中内容当成表来操作很简单,但现在有一个问题就是,怎么样对txt,EXCEL这两个不同文件中的两个表放在一起进行多表查询呢。
我现在能想到的是
1.在EXCEL文件中再创建一个sheet2,把TXT文件中的内容写到sheet2里,然后只打开EXCEL文件操作[sheet1$],[sheet2$]
2.把两个文件中的内容全部用select *读到记录集里,再对记录集进行操作。但是这样又有一个我不知道的问题,对于记录集里的结果,有没有办法也当成表来执行SQL语句再进行查询操作呢
或者有没有更好更方便的方法呢?
6 个解决方案
#1
.txt 和 .xls 文件都是 Jet Engine 支持的外部数据库。但是,Jet Engine 不支持同时打开外部两个数据库。
你可以把 .txt 文件写入 Access 临时表,然后和 Excel 一起查询。
还有一种笨办法,把你原来的查询顺序倒过来:
1 从 .txt 读取一条记录
2 Update [sheet1$] Set field2 = 1 Where field1 = 'A'
当然 SQL 命令中的参数引用的都是 .txt 读取的值。
#2
把TXT文件转化在EXCEL表,用VLOOKUP函数不行吗?
#3
就是像我上面说的第一种
1.在EXCEL文件中再创建一个sheet2,把TXT文件中的内容写到sheet2里,然后只打开EXCEL文件操作[sheet1$],[sheet2$]
这样才可以是吧?
那我之前说的,先把两个文件打开,内容读到recordset里,然后可以对recordset里的内容执行SQL语句吗
1.在EXCEL文件中再创建一个sheet2,把TXT文件中的内容写到sheet2里,然后只打开EXCEL文件操作[sheet1$],[sheet2$]
这样才可以是吧?
那我之前说的,先把两个文件打开,内容读到recordset里,然后可以对recordset里的内容执行SQL语句吗
#4
另外我想用Range的CopyFromRecordset方法来把recordset中的内容直接全部复制到EXCEL中去,recordset中的结果只有一列,我想把它复制到我的EXCEL文件中的E列
myexlWorkbook.Worksheets(1).Range("E2").CopyFromRecordset rs
结果到这一句的时候VBS报错.内容是
"用于查看已链接的Microsoft Excel工作表的连接,已经失去"
请问有人知道这个是什么原因吗
myexlWorkbook.Worksheets(1).Range("E2").CopyFromRecordset rs
结果到这一句的时候VBS报错.内容是
"用于查看已链接的Microsoft Excel工作表的连接,已经失去"
请问有人知道这个是什么原因吗
#5
creat table table1 名称 c(1) ,类型 c(1)
use table1
appe from .txt type sdf
import from 2.xls type xl5
sele 1
use table1
sele 2
use 2
sele table.*,2.名称,2. 类型,2.其他参数 from table1 full join 2
use table1
appe from .txt type sdf
import from 2.xls type xl5
sele 1
use table1
sele 2
use 2
sele table.*,2.名称,2. 类型,2.其他参数 from table1 full join 2
#6
SQL语句我知道怎样写,用的是right join
现在唯一的问题就是CopyFromRecordset这个会报错了
现在唯一的问题就是CopyFromRecordset这个会报错了
#1
.txt 和 .xls 文件都是 Jet Engine 支持的外部数据库。但是,Jet Engine 不支持同时打开外部两个数据库。
你可以把 .txt 文件写入 Access 临时表,然后和 Excel 一起查询。
还有一种笨办法,把你原来的查询顺序倒过来:
1 从 .txt 读取一条记录
2 Update [sheet1$] Set field2 = 1 Where field1 = 'A'
当然 SQL 命令中的参数引用的都是 .txt 读取的值。
#2
把TXT文件转化在EXCEL表,用VLOOKUP函数不行吗?
#3
就是像我上面说的第一种
1.在EXCEL文件中再创建一个sheet2,把TXT文件中的内容写到sheet2里,然后只打开EXCEL文件操作[sheet1$],[sheet2$]
这样才可以是吧?
那我之前说的,先把两个文件打开,内容读到recordset里,然后可以对recordset里的内容执行SQL语句吗
1.在EXCEL文件中再创建一个sheet2,把TXT文件中的内容写到sheet2里,然后只打开EXCEL文件操作[sheet1$],[sheet2$]
这样才可以是吧?
那我之前说的,先把两个文件打开,内容读到recordset里,然后可以对recordset里的内容执行SQL语句吗
#4
另外我想用Range的CopyFromRecordset方法来把recordset中的内容直接全部复制到EXCEL中去,recordset中的结果只有一列,我想把它复制到我的EXCEL文件中的E列
myexlWorkbook.Worksheets(1).Range("E2").CopyFromRecordset rs
结果到这一句的时候VBS报错.内容是
"用于查看已链接的Microsoft Excel工作表的连接,已经失去"
请问有人知道这个是什么原因吗
myexlWorkbook.Worksheets(1).Range("E2").CopyFromRecordset rs
结果到这一句的时候VBS报错.内容是
"用于查看已链接的Microsoft Excel工作表的连接,已经失去"
请问有人知道这个是什么原因吗
#5
creat table table1 名称 c(1) ,类型 c(1)
use table1
appe from .txt type sdf
import from 2.xls type xl5
sele 1
use table1
sele 2
use 2
sele table.*,2.名称,2. 类型,2.其他参数 from table1 full join 2
use table1
appe from .txt type sdf
import from 2.xls type xl5
sele 1
use table1
sele 2
use 2
sele table.*,2.名称,2. 类型,2.其他参数 from table1 full join 2
#6
SQL语句我知道怎样写,用的是right join
现在唯一的问题就是CopyFromRecordset这个会报错了
现在唯一的问题就是CopyFromRecordset这个会报错了