创build一个运行SQL查询的macros,并将数据粘贴到Excel中

所以这里是我的困境我试图创build一个macros,运行一个查询位于单元格(表(“SQL”)。范围(“G1”)),并将该查询中的数据粘贴到表(“数据 “)。范围(” B1" )。 我想到了下面的代码,但我不断收到一个编译错误:用户定义的types没有定义。 请任何有关我在做什么错误的见解将不胜感激。

Sub ConnectSqlServer() Dim conn As ADODB.Connection Dim rs As ADODB.Recordset Dim sConnString As String Dim StrSQL As Variant Application.ScreenUpdating = False Application.Cursor = xlWait Set cnPubs = New ADODB.Connection Set rsPubs = New ADODB.Recordset StrSQL = " SET NOCOUNT ON " ' Create the connection string. sConnString = "Provider=SQLOLEDB; DATA SOURCE=CFS-SERVERSQL;" & _ "Initial Catalog=dmtrans;" & _ "Integrated Security=SSPI;" ' Create the Connection and Recordset objects. Set conn = New ADODB.Connection Set rs = New ADODB.Recordset ' Open the connection and execute. conn.Open sConnString Set rs = conn.Execute(Sheets("SQL").Range("G1")) ' Check we have data. If Not rs.EOF Then ' Transfer result. Sheets("Data").Range("B4:S50000").ClearContents Sheets(Data).Range("b4").CopyFromRecordset rs ' Close the recordset rs.Close Else MsgBox "Error: No records returned.", vbCritical End If ' Clean up If CBool(conn.State And adStateOpen) Then conn.Close Set conn = Nothing Set rs = Nothing End Sub 

您可能没有为您的ADODB对象设置参考。

你可以用早期绑定来做到这一点:

(完全不知道名称,我正在使用德语Excel)Extras – References:在项目中点击checkbox,添加参考Microsoft ActiveX Data Objects vXXX。

或者你可以通过晚期绑定来完成。 在这种情况下,您必须将variables声明为Object并通过CreateObject实例化它。 请在这里find一个相关的问题: Excel VBA:迟绑定参考