微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从电子表格单元格内运行 SQL 查询

如何解决从电子表格单元格内运行 SQL 查询

我有一个 Excel 电子表格,其中多个 sql 查询存储在不同的单元格中,我想在 sql Server 上执行这些查询生成一个新工作表,其中每个单元格都是来自原始电子表格的查询结果。这背后的想法是在生成结果(条件格式等)时保留工作表格式。

像这样:

输入电子表格:

输出电子表格:

数据库 信息A 信息B
数据库 1 查询 1 的结果 查询 2 的结果
数据库 2 查询 3 的结果 查询 4 ​​的结果

在我对该主题的研究期间,我无法找到有关如何做到这一点的想法,但我相信使用 VBA 或某些脚本语言应该可以做到。

关于我应该如何处理这个问题有什么想法吗?

解决方法

我已经使用 Power Query 完成了。这比我想象的要容易得多。特别感谢 Jacek Wróbel 在评论中提供想法。

,

顺便说一句,你可以做这样的事情。

Sub ADOExcelSQLServer()
     
    Dim Cn As ADODB.Connection
    Dim Server_Name As String
    Dim Database_Name As String
    Dim User_ID As String
    Dim Password As String
    Dim SQLStr As String
    Dim rs As ADODB.Recordset
    Set rs = New ADODB.Recordset
     
    Server_Name = "EXCEL-PC\SQLEXPRESS" ' Enter your server name here
    Database_Name = "Northwnd" ' Enter your  database name here
    User_ID = "" ' enter your user ID here
    Password = "" ' Enter your password here
    SQLStr = "SELECT * FROM Orders" ' Enter your SQL here
     
    Set Cn = New ADODB.Connection
    Cn.Open "Driver={SQL Server};Server=" & Server_Name & ";Database=" & Database_Name & _
    ";Uid=" & User_ID & ";Pwd=" & Password & ";"
     
    rs.Open SQLStr,Cn,adOpenStatic
    
    With Worksheets("Sheet1").Range("A1:Z500")
        .ClearContents
        .CopyFromRecordset rs
    End With
    
    rs.Close
    Set rs = Nothing
    Cn.Close
    Set Cn = Nothing
End Sub

它位于 VBA 模块中。当然,您可以将 SQL 存储在 Excel 单元格中,然后执行此操作...

SQLStr = Worksheets("Sheet1").Range("A1").Value

此外,您可以遍历一堆单元格并运行一堆 SQL 作业。

你自己的想象力是你唯一的限制。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。