我复制从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