问题描述
我有一个 Excel 电子表格,其中多个 sql 查询存储在不同的单元格中,我想在 sql Server 上执行这些查询以生成一个新工作表,其中每个单元格都是来自原始电子表格的查询结果。这背后的想法是在生成结果(条件格式等)时保留工作表格式。
像这样:
输入电子表格:
输出电子表格:
在我对该主题的研究期间,我无法找到有关如何做到这一点的想法,但我相信使用 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 作业。
你自己的想象力是你唯一的限制。