Noob在这里。 excel中的这个vba代码应该使用ADO连接到sql 2008,运行查询并在excel中填充sheet1。现在,标题错误不断弹出这一行 “Sheet1.Range(”A1“)。CopyFromRecordset rst”。
Sub Code1()
Dim cnt As ADODB.Connection
Dim rst As ADODB.Recordset
Dim SqlQuery As String
Application.ScreenUpdating = False
Const stADO As String = "Provider=SQLOLEDB.1;Password=NOPWDHERE;Persist Security Info=True;User ID=sa;Initial Catalog=StockControl;Data Source= PCSMIS01"
Set wbBook = ActiveWorkbook
Set WsSheet = wbBook.Worksheets(1)
SqlQuery = " SELECT * FROm dbo.Site "
Set cnt = New ADODB.Connection
Set rst = New ADODB.Recordset
With cnt
.CursorLocation = adUseClient
.Open stADO
.CommandTimeout = 0
Set rst = .Execute(SqlQuery)
End With
Sheet1.Range("A1").CopyFromRecordset rst
'With rst
' .ActiveConnection = cnt
' .Open SqlQuery
' Sheet1.Range("A1").CopyFromRecordset rst
' .Close
'End With
rst.Close
cnt.Close
Set rst = Nothing
Set cnt = Nothing
End Sub
我还尝试了一种替代方法,使用注释代码将数据复制到工作表中。我已尽可能在互联网上研究类似的主题,但我现在更加困惑。请帮忙。
答案 0 :(得分:0)
Sheet1
替换WsSheet
(未被引用):
Sub Code1()
Dim cnt As ADODB.Connection
Dim rst As ADODB.Recordset
Dim SqlQuery As String
Application.ScreenUpdating = False
Const stADO As String = "Provider=SQLOLEDB.1;Password=NOPWDHERE;Persist Security Info=True;User ID=sa;Initial Catalog=StockControl;Data Source= PCSMIS01"
Set wbBook = ActiveWorkbook
Set WsSheet = wbBook.Worksheets(1)
SqlQuery = " SELECT * FROm dbo.Site "
Set cnt = New ADODB.Connection
Set rst = New ADODB.Recordset
With cnt
.CursorLocation = adUseClient
.Open stADO
.CommandTimeout = 0
Set rst = .Execute(SqlQuery)
End With
WsSheet.Range("A1").CopyFromRecordset rst
'With rst
' .ActiveConnection = cnt
' .Open SqlQuery
' Sheet1.Range("A1").CopyFromRecordset rst
' .Close
'End With