VBA:ADO连接excel配合SQL操作

通过VBA利用ADO连接Excel并配合SQL语句,实现数据表间的操作,如快速更新sheet1数据,避免繁琐的VBA循环判断。尽管VBA中复杂的内外连接存在困难,但通过增加SQL语句数量仍能实现所需功能。注意,Excel空单元格的特殊性质使得处理它们成为挑战,而VBA不支持直接的delete语句,需要通过update设置为null来实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

excel里sheet1的ambass栏要填,site栏是key。和sheet2 sheet3有一对一关系,最后从sheet3得出ambass填入sheet1。纯表操作用sql来做非常方便,整个方法跑下来只需要3秒就跑完了,没有VBA众多循环判断关系,简单的select update两句即可。

需要注意的重点:

  1. vba里外连接异常困难,3个表或以上的内加外连接难以实现。我尝试了很久最终还是放弃了,用回简单的内连接,增加sql语句数,一样可以实现。
  2. excel里为空的单元格,既不是null,也不是'',也不是' ',也没有字符串长度,也没有类型,我不能选中它们,大神们有办法请告知
  3. VBA里不可用delete语句,真要delete只能曲线救国,用update set栏位为null

select语句的输出:

    strsql1 = "select distinct A.[Site],C.[CA] from [Sheet1$] A ,[location$] C where A.[Site]=C.[Local]" 
    Set Rst = Conn.Execute(strsql1)  --rst为执行sql之后的表
    Sheets("Output").Range("A2").CopyFromRecordset Rst --把rst输出到sheet(output)里,A2单元格开始,关键字CopyFromRecordset 


update语句则更简单,只要执行就好:

  Set Rst = Conn.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值