全球旧事资料 分类
了个别几个查找引用类函数(例如VLOOKUP),绝大部分函数都需要打开相关工作簿后才
f可以使用计算。是的,VLOOKUP函数并不需要打开相关工作簿也可以跨工作薄使用,而且在VLOOKUP公式书写完成后,即便你把它所引用的工作簿给删了,也不妨碍它计算,这是因为它已经把相关数据缓存到了公式所在的工作簿中,不过VLOOKUP这种模式并不支持函数嵌套使用……打个响指,关于这一点,如果你感兴趣,我们改天单独聊一下。说回SQL……我觉得我今天精神老是不集中,码个字也老是跑题,且慢的像蜗牛,也许有人在想我,也许有人在骂我,不管了,我先去刷会微博,哦,对了,星光俺的微博是EXCELers,没事记得关注下…………说回SQL……我们之前分享的SQL语句都是处理当前工作簿的表格,如果我们所需要处理的数据位于其它工作簿时,SQL该怎么表述呢?例如,获取位于计算机D盘的“EH小学”文件夹下的“学生表xlsx”工作簿中的“成绩表”的所有数据一口气读完这话的,送你一脸坏笑暴击点赞。如果是OLEDB法(该方法参考第1章)使用SQL,语句如下:SELECTFROMDEH小学学生表xlsx成绩表FROM后的指定表字符串有两个部分构成,第一个中括号内是指定工作簿的存放路径带后缀的完整工作簿名称,后一个中括号内是工作表名称,两个中括号之间使用英文句号()相连。如果是通过VBAADO使用SQL语句……嘟嘟敲书柜前方预警:VBA基础差的童鞋请自行跳过以下内容……相比于OLEDB
f法,VBAADO的方法要灵活的多,它可以使用ADO直接创建并打开和指定工作簿的链接,因此SQL语句便无需再指定工作簿完整名称等。代码参考如下:SubADO_Sql适用于除2003版以外的高版本ExcelObjectrstAsObjectStri
gSqlAsStri
gDimc
As
DimMypathAsStri
gStr_c
AsDimiAsLo
gSetc

CreateObjectadodbco
ectio
生表xlsx指定工作簿
MypathDEH小学学
Str_c

ProviderMicrosoftACEOLEDB120Exte
dedPropertiesExcel120DataSourceampMypathc
Ope
Str_c
创建并打开到指定工作簿的链接Sql
SELECTFROM成绩表Sql语句,查询成绩表的所有数据Setrstc
ExecuteSql执行SQLFori0TorstFieldsCou
t1Nextc
CloseSetc

CellsClearCo
te
ts
Cells1i1rstFieldsiNameRa
gea2CopyFromRecordsetrst
Nothi
gE
dSub但更多的情况是,ADO创建的链接是一个工作簿,需要获取的数据在另一个或多个工作簿,例如跨表格数据查询统计。此时通常使用的代码如下:SubADO_Sql2适用于除2003版以外的高版本ExcelObjectrstAsObjectStri
gSqlAsStri
gDimc
As
DimMypatr
好听全球资料 返回顶部