Excel中通过ADO执行SQL
2022-04-07 本文已影响0人
五维思考
VBA执行SQL语句有一个固定的套路:
- 绑定ADO
- 连接数据源
- 设置查询语句,并执行
- 写入查询结果
- 关闭连接释放资源
参考代码如下:
Sub ExecSql()
Dim cnn As Object, rst As Object
Dim strPath As String, str_cnn As String, strSQL As String
Dim i As Long
'第一步:后期绑定ADO
Set cnn = CreateObject("adodb.connection")
strPath = ThisWorkbook.FullName
'设置当前工作簿为数据源
If Application.Version < 12 Then
str_cnn = "Provider=Microsoft.jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=" & strPath
Else
str_cnn = "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;Data Source=" & strPath
End If
'第二步:建立链接
cnn.Open str_cnn
strSQL = "SELECT 姓名,成绩 FROM [Sheet1$] WHERE 成绩>=80"
'第三步:执行SQL语句,得到记录集rst
Set rst = cnn.Execute(strSQL)
'选中存放结果的工作表
Worksheets("结果表").Select
Cells.ClearContents '清空值
For i = 0 To rst.Fields.Count - 1
'利用fields属性获取所有字段名
Cells(1, i + 1) = rst.Fields(i).Name
Next
'第四步:将rst内容复制到D2单元格为左上角的单元格区域
Range("a2").CopyFromRecordset rst
'第五步:关闭链接
cnn.Close
Set cnn = Nothing '释放内存
End Sub