在 VBA 中关闭对象时不允许操作
Operation not allowed when the object is closed in VBA
我是这个网站的新手,也是 VBA,
一些我如何设法写 VBA,但出现上述错误。请告知我代码中的任何更改。谢谢
Option Explicit
Const ConStrSql As String = "----"
Sub CopyDataFromDatabase()
Dim DataConn As ADODB.Connection
Dim StaffData As ADODB.Recordset
Dim DataFiels As ADODB.Field
Set DataConn = New ADODB.Connection
Set StaffData = New ADODB.Recordset
DataConn.ConnectionString = ConStrSql
DataConn.Open
On Error GoTo CloseConnection
With StaffData
.ActiveConnection = DataConn
.Source = "select ---"
.LockType = adLockReadOnly
.CursorType = adOpenKeyset
End With
On Error GoTo CloseRecordset
Worksheets.Add
For Each DataFiels In StaffData.Fields
ActiveCell.Value = DataFiels.Name
ActiveCell.Offset(0, 1).Select
Next DataFiels
Range("A1").Select
Range("A2").CopyFromRecordset StaffData
Range("A1").CurrentRegion.EntireColumn.AutoFit
CloseRecordset:
StaffData.Close
CloseConnection:
DataConn.Close
End Sub
当我删除
CloseRecordset:
StaffData.Close
我在 excel 中列出了列,但没有数据
请指教。谢谢
您的代码定义了 Recordset
但没有打开它。添加:
StaffData.Open
之前:
Range("A2").CopyFromRecordset StaffData
应该可以解决问题。
我是这个网站的新手,也是 VBA, 一些我如何设法写 VBA,但出现上述错误。请告知我代码中的任何更改。谢谢
Option Explicit
Const ConStrSql As String = "----"
Sub CopyDataFromDatabase()
Dim DataConn As ADODB.Connection
Dim StaffData As ADODB.Recordset
Dim DataFiels As ADODB.Field
Set DataConn = New ADODB.Connection
Set StaffData = New ADODB.Recordset
DataConn.ConnectionString = ConStrSql
DataConn.Open
On Error GoTo CloseConnection
With StaffData
.ActiveConnection = DataConn
.Source = "select ---"
.LockType = adLockReadOnly
.CursorType = adOpenKeyset
End With
On Error GoTo CloseRecordset
Worksheets.Add
For Each DataFiels In StaffData.Fields
ActiveCell.Value = DataFiels.Name
ActiveCell.Offset(0, 1).Select
Next DataFiels
Range("A1").Select
Range("A2").CopyFromRecordset StaffData
Range("A1").CurrentRegion.EntireColumn.AutoFit
CloseRecordset:
StaffData.Close
CloseConnection:
DataConn.Close
End Sub
当我删除
CloseRecordset:
StaffData.Close
我在 excel 中列出了列,但没有数据
请指教。谢谢
您的代码定义了 Recordset
但没有打开它。添加:
StaffData.Open
之前:
Range("A2").CopyFromRecordset StaffData
应该可以解决问题。