将SQL语句的结果粘贴到多个单元格的范围内?

时间:2012-05-29 13:25:15

标签: excel vba

我有一个SQL语句数组,我循环,执行,获取结果并粘贴。

大多数语句只返回一个值,但其中一个SQL函数返回四个值。我想保留一系列范围,我可以将每个SQL函数的结果粘贴到。

从返回记录集的那一点开始,到我粘贴记录集数据的点是什么样的正确代码,这对于1个值结果和4个值结果有效?我应该使用Something = rs.getrows ??我应该使用什么粘贴语句?

四个值结果将被粘贴到四个单元格的垂直范围内,名为X.

编辑,到目前为止得到了这个:

For i = LBound(SQLFunctionArray, 1) To UBound(SQLFunctionArray, 1)

    If UseCurrencyAsArg(i) = True Then
        SecondArg = Ccy
    Else
        SecondArg = FileName
    End If

    SQLFunctionToCall = SQLFunctionArray(i)
    Range(RangeForPasting(i)) = WorksheetFunction.Transpose(GetSQLData(COB, SecondArg, SQLFunctionToCall))

Next

但它不适用于四值SQL结果。 GetSQLData返回rs.getrows数组

1 个答案:

答案 0 :(得分:0)

您可以使用此功能翻转GetRows数组:

Function TransposeGetRows(arr)
    Dim nr As Long, nc As Long
    Dim r As Long, c As Long
    Dim arrOut()
    nr = UBound(arr, 2)
    nc = UBound(arr, 1)
    ReDim arrOut(0 To nr, 0 To nc)
    For r = 0 To nr
        For c = 0 To nc
            arrOut(r, c) = arr(c, r)
        Next c
    Next r
    TransposeGetRows = arrOut
End Function

然后将数组放在表格上:

Range(RangeForPasting(i)).Resize(UBound(arr, 1) + 1, _
                                 UBound(arr, 2) + 1).Value = arr