【问题标题】:Operation not allowed when the object is closed in VBA在VBA中关闭对象时不允许操作
【发布时间】:2015-04-01 19:48:23
【问题描述】:

我是这个网站的新手,也是 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 中列出了列,但没有列出数据

请提供任何建议。谢谢

【问题讨论】:

    标签: vba excel sql-server-2008-r2


    【解决方案1】:

    您的代码定义了Recordset,但没有打开它。添加:

    StaffData.Open
    

    之前:

    Range("A2").CopyFromRecordset StaffData
    

    应该能解决问题。

    【讨论】:

    • 感谢解决。您能否建议在 VBA 中添加存储过程。我想我以后需要这个。谢谢
    • @KK1960 您的问题不清楚,与此问题无关。如果您对存储过程有任何问题,您应该创建一个单独的问题并详细描述它。
    • @user3964075,我在同一个任务中还有一个要求。我得到一列,其中包含红色、琥珀色、绿色和 N/A 的值。现在我想要相应值的背景颜色(红色、琥珀色、绿色和白色)。我怎样才能在 VBA 中做到这一点?谢谢
    • @KK1960 我建议将此列应用条件格式 - 无需检查每个值。否则,您必须遍历所有行,比较值并相应地设置单元格.Interior.Color
    猜你喜欢
    • 2016-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多