Excel 2003 - Copy Variant to Clipboard?

I

INTP56

When using ADO record sets, I can do something like the following:

Dim ADODB_Connection As ADODB.Connection
Dim ADODB_Command As ADODB.Command
Dim ADODB_RecordSet As ADODB.RecordSet
Dim varRecordSet As Variant, varTransposed As Variant

....(ADO setup stuff) ...
Set ADODB_RecordSet = ADODB_Command.Execute
varRecordSet = ADODB_RecordSet.GetRows

but if continue with something like

Worksheets(1).Range("SomethingAppropriate").Value = varRecordSet

it comes out in c,r format (limiting rows returned to 256) instead of r,c
format.

Right now, I do something like the following:

For r = 1 to NumRows
For c = 1 to NumCols
varTransposed(r,c) = varRecordSet(c-1,r-1)
Next c
Next r

I was wondering if there was some way to move varRecordSet onto the
clipboard, then do something like

..PasteSpecial xlTransposed

instead of manually transposing the array.

Thanks, Bob

P.S. I looked into the DataObject, but it seems only to handle a string.
 
P

Patrick Molloy

you need a connection and a recordset

open the connection to the database

then open the recordset ...


here's an example

Option Explicit
sub Fetch()
Dim rst As ADODB.Recordset
Dim db As Connection
Dim SQL As String

Set db = New Connection
With db
.CursorLocation = adUseClient
.Open "PROVIDER=MSDASQL;driver={SQL
Server};server=MyServerNameC;uid=;pwd=;database=MyDatabase;"
End With

Set rst = New Recordset
SQL = "select itemnumber, description from Products"
rst.Open SQL, db, adOpenStatic, adLockOptimistic

Range("B1").CopyFromRecordset rst

rst.Close
db.Close
Set rst = Nothing
Set db = Nothing

End Sub
 
I

INTP56

Patrick,

Thanks for telling me about the Range.CopyFromRecordSet method. It's just
what I was looking for.

Bob
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top