在VBA中关闭对象时不允许操作
问题描述:
我对这个站点以及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中添加存储过程。我想我以后再见。谢谢 – GK1960 2015-04-01 10:11:44
@ KK1960你的问题不清楚,与这个问题无关。如果你对存储过程有任何问题,你应该创建一个单独的问题并用所有的细节来描述它。 – BrakNicku 2015-04-01 10:15:20
@ user3964075,我在同一个任务中获得了更多的需求。我有一列包含红色,琥珀色,绿色和N/A值。现在我想要根据值(红色,琥珀色,绿色和白色)的背景颜色。我如何在VBA中做到这一点?谢谢 – GK1960 2015-04-01 12:29:23