我的 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)
我目前无法对此进行测试,但您可以:
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