转置 CopyFromRecordset Excel VBA

Kri*_*ina 5 excel vba

我的 Excel VBA 中有以下代码,可将 SQL 中的表中的数据复制到 Excel 中。此数据从单元格 C2 开始水平插入,但我希望它垂直插入列 C。

Sheets("Control").Range("C2").CopyFromRecorset rsPubs
Run Code Online (Sandbox Code Playgroud)

rsPubs我的 ADO 连接在哪里。

基本上,我只想转置这些数据。这样做的有效方法是什么?任何帮助将不胜感激!

编辑: 这是如何rsPubs创建的(连接工作正常,因为我实际上正在获取数据):

' Create a recordset object.
Dim rsPubs As ADODB.Recordset
Set rsPubs = New ADODB.Recordset

With rsPubs
    ' Assign the Connection object.
    .ActiveConnection = cnPubs
    ' Extract the required records.
    .Open "SELECT * FROM Analytics.dbo.XBodoffFinalAllocation"
    ' Copy the records into cell B3 on Sheet1.
    Sheets("Control").Range("C2").CopyFromRecordset rsPubs
    ' Tidy up
    .Close
End With

cnPubs.Close
Set rsPubs = Nothing
Set cnPubs = Nothing
Run Code Online (Sandbox Code Playgroud)

Joo*_*ook 5

我目前无法对此进行测试,但您可以:

Sheets("Control").Range("C2").CopyFromRecorset rsPubs 'copy your data
Sheets("Control").Range("C2").Copy 'copy the data into clipboard
Sheets("Control").Range("C2").PasteSpecial xlPasteValues, xlPasteSpecialOperationNone, True, True
Run Code Online (Sandbox Code Playgroud)

您也可以使用转置工作表功能 - 但是,我现在还没有看到直接执行此操作的方法,希望您的输入数据已经转置。

编辑:

这是一个很好的官方示例和有关此主题的更多信息:http : //support.microsoft.com/kb/246335/en-us

尤其是“使用 GetRows”部分。

编辑2:

这应该做

Dim resultset As Variant
Dim result As Variant
resultset = rsPubs.GetRows
result = Application.WorksheetFunction.Transpose(resultset)
Sheets("Control").Range("C2").Resize(UBound(result, 1), UBound(result, 2)) = result
Run Code Online (Sandbox Code Playgroud)

http://www.teachexcel.com/excel-help/excel-how-to.php?i=147811