运行 SQL 来自电子表格单元格内部的查询

Running SQL queries from inside spreadsheet cells

我有一个 Excel spreadsheet,其中几个 SQL 查询存储在不同的单元格中,我想在 SQL 服务器上执行这些查询以生成一个new sheet 其中每个单元格都是原始 spreadsheet 的查询结果。这背后的想法是在生成结果时保留 sheet 格式(条件格式等)。

像这样:

输入点差sheet:

Database Information A Information B
DB 1 SQL Query 1 SQL Query 2
DB 2 SQL Query 3 SQL Query 4

输出点差sheet:

Database Information A Information B
DB 1 Result of Query 1 Result of Query 2
DB 2 Result of Query 3 Result of Query 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 作业。

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