运行以下代码时,我在CopyFromRecordset行上收到438运行时错误。我弄清楚了我的错误,但谷歌搜索这个问题没有帮助,所以我想在这里发布解决方案。
以下代码的目的是从数据库中提取一组数据,将其粘贴到命名范围,然后调整命名范围的大小以适应新数据集。
Sub testCopyRecordset()
Dim rs As ADODB.Recordset
Dim conn As ADODB.Connection
Set rs = New ADODB.Recordset
Set conn = New ADODB.Connection
conn.Open connStr
rs.CursorType = adOpenStatic
rs.Open "Select * from Test;", conn
rs.MoveLast
rs.MoveFirst
With ThisWorkbook.Names.Item("targetRng")
.RefersTo = .RefersToRange.Resize(rs.RecordCount)
.CopyFromRecordset rs
End With
conn.Close
End Sub
答案 0 :(得分:0)
问题在于对命名范围的引用。从CopyFromRecordset
语句中取With
附加到正常引用的Range
解决了错误,如下所示:
With ThisWorkbook.Names.Item("targetRng")
.RefersTo = .RefersToRange.Resize(rs.RecordCount)
End With
Range("targetRng").CopyFromRecordset rs