VBA之使用ADO操作外部数据

1.添加ADO接口
工具→引用→找到Microsoft ActiveX Data Objects→确定
VBA之使用ADO操作外部数据_第1张图片
VBA之使用ADO操作外部数据_第2张图片
2.连接ADO
Dim conn As New ADODB.Connection
conn.Open “Provider = Microsoft.ACE.OLEDB.12.0;Data Source=D:\data\Edata.xlsx;extended properties=”“excel 12.0;HDR=YES”""
conn.Close

在这里插入图片描述

3.和sql语句搭配使用
VBA之使用ADO操作外部数据_第3张图片
代码:
Sub test()
Dim conn As New ADODB.Connection

conn.Open “Provider = Microsoft.ACE.OLEDB.12.0;Data Source=D:\data\Edata.xlsx;extended properties=”“excel 12.0;HDR=YES”""

'Range(“a1”).CopyFromRecordset conn.Execute(“select * from [data ] u n i o n a l l s e l e c t ∗ f r o m [ d a t a 2 ] union all select * from [data2 ]unionallselectfrom[data2]”)

'Range(“e1”).CopyFromRecordset conn.Execute(“select 姓名,年龄 from[data ] u n i o n a l l s e l e c t 姓 名 , 年 龄 f r o m [ d a t a 2 ] union all select 姓名,年龄 from[data2 ]unionallselect,from[data2]”)

Range(“h1”).CopyFromRecordset conn.Execute(“select * from [data ] w h e r e 性 别 = ′ 男 ′ u n i o n a l l s e l e c t ∗ f r o m [ d a t a 2 ] where 性别='男'union all select * from [data2 ]where=unionallselectfrom[data2] where 性别=‘男’”)
conn.Close

End Sub

4.使用sql左连接
VBA之使用ADO操作外部数据_第4张图片
代码如下:

Sub test()
Dim conn As New ADODB.Connection
Dim sql As String

conn.Open “Provider = Microsoft.ACE.OLEDB.12.0;Data Source=D:\data\Edata.xlsx;extended properties=”“excel 12.0;HDR=YES”""

'Range(“a1”).CopyFromRecordset conn.Execute(“select * from [data ] u n i o n a l l s e l e c t ∗ f r o m [ d a t a 2 ] union all select * from [data2 ]unionallselectfrom[data2]”)

'Range(“e1”).CopyFromRecordset conn.Execute(“select 姓名,年龄 from[data ] u n i o n a l l s e l e c t 姓 名 , 年 龄 f r o m [ d a t a 2 ] union all select 姓名,年龄 from[data2 ]unionallselect,from[data2]”)

'Range(“h1”).CopyFromRecordset conn.Execute(“select * from [data ] w h e r e 性 别 = ′ 男 ′ u n i o n a l l s e l e c t ∗ f r o m [ d a t a 2 ] where 性别='男'union all select * from [data2 ]where=unionallselectfrom[data2] where 性别=‘男’”)
'sql = “insert into [data ] ( 姓 名 , 性 别 , 年 龄 ) v a l u e s ( ′ A A ′ , ′ 男 ′ , 33 ) " ′ s q l = " u p d a t e [ d a t a ] (姓名,性别,年龄) values ('AA','男',33)" 'sql = "update [data ](,,)values(AA,,33)"sql="update[data] set 性别=‘男’,年龄=1 where 姓名=‘张三’”

'sql = “select [data ] . 姓 名 , 性 别 , 年 龄 , 月 薪 f r o m [ d a t a ].姓名,性别,年龄,月薪 from [data ].,,,from[data] left join [data3 ] o n [ d a t a ] on [data ]on[data].姓名=[data3 ] . 姓 名 " s q l = " s e l e c t a . 姓 名 , 性 别 , 年 龄 , 月 薪 f r o m ( s e l e c t ∗ f r o m [ d a t a ].姓名 " sql = "select a.姓名,性别,年龄,月薪 from (select * from [data ]."sql="selecta.,,,from(selectfrom[data] union all select * from [data2 ] ) a l e f t j o i n [ d a t a 3 ])a left join [data3 ])aleftjoin[data3] on a.姓名 = [data3$].姓名”
Range(“a2”).CopyFromRecordset conn.Execute(sql)

conn.Close

End Sub

你可能感兴趣的:(VBA)