使用ADO从Excel错误3704连接到Access数据库

当我使用下面的代码从Excel连接到访问数据库时,出现错误3704“对象closures时不允许操作”。 在线

Call .Offset(1, 0).CopyFromRecordset(rstRecordSet) 

我可以通过评论这条线来“解决”这个问题

 adoConnection.Close 

但我真的不喜欢那个,或者明白为什么它解决了这个问题。

任何人都可以解释什么是错的,如何解决它?

谢谢

 Private Const constStrDBPath As String = "H:\Projects\DP.mdb" Private Const constStrConnection As String = "Provider=Microsoft.ACE.OLEDB.12.0;" & _ "Data Source=" & constStrDBPath & ";" & _ "Jet OLEDB:Engine Type=5;" & _ "Persist Security Info=False;" Public Function SelectStatement(strCommandText As String) As Object Dim adoConnection As New ADODB.Connection Dim adoCommand As New ADODB.Command Dim rstRecordSet As New ADODB.Recordset adoCommand.CommandText = strCommandText adoConnection.Open constStrConnection adoCommand.ActiveConnection = adoConnection 'create the recordset by executing command string Set rstRecordSet = adoCommand.Execute(, , adadoCommandText) Set SelectStatement = rstRecordSet ' clean up adoConnection.Close Set rstRecordSet = Nothing Set adoConnection = Nothing Set adoCommand = Nothing End Function Sub TestSelect() Dim rstRecordSet As Object Dim lngField As Long Set rstRecordSet = SelectStatement("SELECT * FROM tblSystem") If Not rstRecordSet Is Nothing Then With Sheet1.Range("A1") For lngField = 1 To rstRecordSet.Fields.Count .Cells(1, lngField).Value = rstRecordSet.Fields(lngField - 1).Name Next lngField Call .Offset(1, 0).CopyFromRecordset(rstRecordSet) End With End If End Sub 

你的函数SelectStatement不是从数据库中读取(读取)任何东西。

用简单的术语来说,你的实际SelectStatement()用Access打开一个通道,准备查询,设置一个游标然后丢弃所有的。

在阅读最后一个logging集之后,清理阶段必须推迟。