将多维数组传递到VBA中的记录集变量中

我有一个ultimatley数组,我想将其用作构建数据透视表的数据源,我了解到数据透视表不会接受数组,因此我应该使用记录集作为数据透视表会接受此数组。

我正在努力使用数组构建记录集。

如何将多维数组传递到记录集?

如何在数据透视表中使用数组数据?

感谢您的帮助。

wangyin2003 回答:将多维数组传递到VBA中的记录集变量中

您要查找的术语是“断开记录集”。一旦您知道Google的用语,便有很多示例。 例如:https://developer.rhino3d.com/guides/rhinoscript/disconnected-recordset-sorting/

这是一个基本示例:

Sub PopCache()

    Dim pc As PivotCache,rs As ADODB.Recordset,pt As PivotTable
    Dim arr,x As Long

    Set pc = ThisWorkbook.PivotCaches.Create(xlExternal)

    'get an array for testing
    arr = ActiveSheet.Range("J4").CurrentRegion.Value 

    'populate the pivotcache from a recordset
    Set pc.Recordset = ArrayToRecordSet(arr,_
                                        Array("Name","Color","Length"))

    Set pt = pc.CreatePivotTable(ActiveSheet.Range("B2"))

End Sub

'Take an array of data and an array of field names and
'  return a populated disconnected recordset
Function ArrayToRecordSet(arr,fieldNames) As Object
    Dim rs As Object,r As Long,c As Long,h,f As Long

    Set rs = CreateObject("ADODB.Recordset")
    For Each h In fieldNames
        rs.Fields.Append h,adVariant
    Next h
    rs.Open
    For r = LBound(arr,1) To UBound(arr,1)
        rs.AddNew
        f = 0
        For c = LBound(arr,2) To UBound(arr,2)
            rs.Fields(f).Value = arr(r,c)
            f = f + 1
        Next c
    Next r
    Set ArrayToRecordSet = rs
End Function
本文链接:https://www.f2er.com/2642760.html

大家都在问