我複製從MSDN的VBA代碼片段,顯示我如何抓住從一個SQL查詢到Excel工作表的結果(Excel 2007中):訪問SQL數據庫在Excel的VBA
Sub GetDataFromADO()
'Declare variables'
Set objMyConn = New ADODB.Connection
Set objMyCmd = New ADODB.Command
Set objMyRecordset = New ADODB.Recordset
'Open Connection'
objMyConn.ConnectionString = "Provider=SQLOLEDB;Data Source=localhost;User ID=abc;Password=abc;"
objMyConn.Open
'Set and Excecute SQL Command'
Set objMyCmd.ActiveConnection = objMyConn
objMyCmd.CommandText = "select * from myTable"
objMyCmd.CommandType = adCmdText
objMyCmd.Execute
'Open Recordset'
Set objMyRecordset.ActiveConnection = objMyConn
objMyRecordset.Open objMyCmd
'Copy Data to Excel'
ActiveSheet.Range("A1").CopyFromRecordset (objMyRecordset)
End Sub
我已經加入微軟ActiveX Data Objects 2.1 Library作爲參考。這個數據庫是可以訪問的。
現在,當我運行這個子程序,它有一個錯誤:
運行時錯誤3704:當對象被關閉的操作是不允許的。
的聲明:
ActiveSheet.Range("A1").CopyFromRecordset (objMyRecordset)
任何想法,爲什麼?
謝謝。
幫助!我有同樣的錯誤,但下面的解決方案沒有幫助:http://stackoverflow.com/questions/1682717/vba-adodb-run-time-error-3704 – Steven 2009-11-05 23:17:56