VBA之使用ADO操作外部数据
1.添加ADO接口
工具→引用→找到Microsoft ActiveX Data Objects→确定
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语句搭配使用
代码:
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]”)
'Range(“e1”).CopyFromRecordset conn.Execute(“select 姓名,年龄 from[data]”)
Range(“h1”).CopyFromRecordset conn.Execute(“select * from [data] where 性别=‘男’”)
conn.Close
End Sub
4.使用sql左连接
代码如下:
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]”)
'Range(“e1”).CopyFromRecordset conn.Execute(“select 姓名,年龄 from[data]”)
'Range(“h1”).CopyFromRecordset conn.Execute(“select * from [data] where 性别=‘男’”)
'sql = “insert into [data] set 性别=‘男’,年龄=1 where 姓名=‘张三’”
'sql = “select [data] left join [data3].姓名=[data3] union all select * from [data2] on a.姓名 = [data3$].姓名”
Range(“a2”).CopyFromRecordset conn.Execute(sql)
conn.Close
End Sub