2015-04-01 97 views
0

我对这个站点以及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中列出的列,但不影响数据

请任何意见。谢谢

回答

1

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

StaffData.Open 

前:

Range("A2").CopyFromRecordset StaffData 

应该解决的问题。

+0

感谢它解决了。你能不能请建议在VBA中添加存储过程。我想我以后再见。谢谢 – GK1960 2015-04-01 10:11:44

+0

@ KK1960你的问题不清楚,与这个问题无关。如果你对存储过程有任何问题,你应该创建一个单独的问题并用所有的细节来描述它。 – BrakNicku 2015-04-01 10:15:20

+0

@ user3964075,我在同一个任务中获得了更多的需求。我有一列包含红色,琥珀色,绿色和N/A值。现在我想要根据值(红色,琥珀色,绿色和白色)的背景颜色。我如何在VBA中做到这一点?谢谢 – GK1960 2015-04-01 12:29:23

相关问题