Excel中通过ADO执行SQL

VBA执行SQL语句有一个固定的套路:

  1. 绑定ADO
  2. 连接数据源
  3. 设置查询语句,并执行
  4. 写入查询结果
  5. 关闭连接释放资源

参考代码如下:

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

你可能感兴趣的:(Excel中通过ADO执行SQL)