vba listobject CopyFromRecordset

时间:2016-06-24 07:51:08

标签: excel-vba vba excel

如何将记录集中的数据填充到列表对象中? 以下代码并不完全有效:

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

2 个答案:

答案 0 :(得分:1)

最后我找到了解决方案。 只需调整listobject的大小以适应内容:

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

答案 1 :(得分:0)

如果始终总是先删除library(data.table) nm1 <- paste0("Q_", rep(c("var1", "var2"), each = 2), c(".Q25", ".Q75")) setDT(d)[, (nm1) := unlist(lapply(.SD, function(x) as.list(quantile(x, prob = c(0.25, 0.75)))), recursive = FALSE), date, .SDcols = var1:var2] d # date var1 var2 Q_var1.Q25 Q_var1.Q75 Q_var2.Q25 Q_var2.Q75 #1: 2017-02-23 1 1 3.50 6.50 8 16.5 #2: 2017-02-22 3 3 3.00 3.00 3 3.0 #3: 2017-02-23 6 18 3.50 6.50 8 16.5 #4: 2017-02-23 7 15 3.50 6.50 8 16.5 #5: 2018-02-22 8 25 5.75 7.25 10 20.0 #6: 2018-02-22 5 5 5.75 7.25 10 20.0 ,则可以使用`.InsertRowRange'。

.DataBodyRange