如何将记录集中的数据填充到列表对象中?下面的代码并不完全有效:
oCN.ConnectionString = "DRIVER={SQL Server};Server=SRVSQL;Database=TEST;"
oCN.Open
Dim sqlString As String
sqlString = "SELECT * FROM MYTABLE"
oRS.Open sqlString, oCN
With Feuil3.ListObjects("TableArticles")
If Not .DataBodyRange Is Nothing Then
.DataBodyRange.Delete
End If
' This make a 91 error
Call .DataBodyRange.CopyFromRecordset(oRS)
' This copy data into sheet, not into listobject
Call Feuil3.Range("A2").CopyFromRecordset(oRS)
End With
Run Code Online (Sandbox Code Playgroud)
如果您总是删除第.DataBodyRange一个,则可以使用“.InsertRowRange”。
With Feuil3.ListObjects("TableArticles")
If Not .DataBodyRange Is Nothing Then .DataBodyRange.Delete
.InsertRowRange.CopyFromRecordset(oRS)
End With
Run Code Online (Sandbox Code Playgroud)
最后我找到了解决方案。只需调整列表对象的大小以适应内容:
With Feuil3.ListObjects("TableArticles")
If Not .DataBodyRange Is Nothing Then
.DataBodyRange.Delete
End If
Call .Range(2, 1).CopyFromRecordset(oRS)
Call .Resize(Feuil3.UsedRange)
End With
Run Code Online (Sandbox Code Playgroud)