Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Заполненеи строки Excel из рекордсета... / 8 сообщений из 8, страница 1 из 1
21.02.2007, 12:55:17
    #34346685
Assai
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполненеи строки Excel из рекордсета...
Привет.
Можно ли заполнить строку Excel из рекордсета, не обращаясь к каждому его полю, а просто, грубо говоря, выкинув его на лист...
Спасибо.
...
Рейтинг: 0 / 0
21.02.2007, 13:00:52
    #34346716
klen_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполненеи строки Excel из рекордсета...
...
Рейтинг: 0 / 0
21.02.2007, 13:01:57
    #34346723
lena_####
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполненеи строки Excel из рекордсета...
CopyFromRecordset Method
Copies the contents of an ADO or DAO Recordset object onto a worksheet, beginning at the upper-left corner of the specified range. If the Recordset object contains fields with OLE objects in them, this method fails.
expression . CopyFromRecordset(Data, MaxRows, MaxColumns)
expression Required. An expression that returns a Range object.
Data Required Variant. The Recordset object to copy into the range.
MaxRows Optional Variant. The maximum number of records to copy onto the worksheet. If this argument is omitted, all the records in the Recordset object are copied.
MaxColumns Optional Variant. The maximum number of fields to copy onto the worksheet. If this argument is omitted, all the fields in the Recordset object are copied.
...
Рейтинг: 0 / 0
21.02.2007, 14:09:07
    #34347077
Assai
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполненеи строки Excel из рекордсета...
А нельзя заполнить, скажем из трех выбранных столбцов рекордсета, а не из всех?
...
Рейтинг: 0 / 0
21.02.2007, 15:08:31
    #34347355
lena_####
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполненеи строки Excel из рекордсета...
Assai

При открытии Recordset, в качестве аргумента Source метода Open приведите подходящую строку SQL, тогда в Recordset попадут данные только из нужных полей. А потом вставляйте все целиком с помощью CopyFromRecordse
...
Рейтинг: 0 / 0
22.02.2007, 14:30:30
    #34350352
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполненеи строки Excel из рекордсета...
AssaiА нельзя заполнить, скажем из трех выбранных столбцов рекордсета, а не из всех?

Можно, например переведя рекордсет в массив и использовав функции листа INDEX и TRANSPOSE

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
Sub Test()
    Dim wb As String, strSQL As String
    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim arrData As Variant
    Dim rng As Range

    wb = ThisWorkbook.FullName
    strSQL = "SELECT * FROM [Sheet1$]"
    
    Set cn = New ADODB.Connection
    cn.Open "DRIVER={Microsoft Excel Driver (*.xls)};" & _
        "DriverId=790;ReadOnly=True;DBQ=" & wb & ";"

    Set rs = New ADODB.Recordset
    rs.Open strSQL, cn, adOpenForwardOnly, _
        adLockReadOnly, adCmdText

    arrData = rs.GetRows
    
    With Sheets("Sheet2")
        Set rng = .Range(.Cells( 1 ,  1 ), .Cells(UBound(arrData,  2 ),  1 ))
    End With
    
    With Application
        rng.Offset(,  0 ) = .Transpose(.Index(arrData,  2 ))
        rng.Offset(,  1 ) = .Transpose(.Index(arrData,  4 ))
        rng.Offset(,  2 ) = .Transpose(.Index(arrData,  7 ))
    End With
    
    rs.Close
    Set rs = Nothing
    cn.Close
    Set cn = Nothing
End Sub


KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
22.02.2007, 14:58:54
    #34350467
sWard
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполненеи строки Excel из рекордсета...
А может быть, без извратов?! через MS Query из MS Access 97 database - хватай любой рекордсет - и оппа! типа - select field1, field 3, field 145 from [query1]
...
Рейтинг: 0 / 0
22.02.2007, 18:32:28
    #34351077
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполненеи строки Excel из рекордсета...
KL (XL)Можно, например переведя рекордсет в массив и использовав функции листа INDEX и TRANSPOSE...

Пардон, забыл, что ADO в отличие от DAO в методе GetRows имеет параметр [Fields]:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
Sub Test()
    Dim wb As String, strSQL As String
    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim arrData As Variant

    wb = ThisWorkbook.FullName
    strSQL = "SELECT * FROM [Sheet1$]"
    
    Set cn = New ADODB.Connection
    cn.Open "DRIVER={Microsoft Excel Driver (*.xls)};" & _
        "DriverId=790;ReadOnly=True;DBQ=" & wb & ";"

    Set rs = New ADODB.Recordset
    rs.Open strSQL, cn, adOpenForwardOnly, _
        adLockReadOnly, adCmdText

    arrData = rs.GetRows(, , Array( 0 ,  2 ,  4 ,  7 ))
     
    With Sheets("Sheet2")
        .Range(.Cells( 1 ,  1 ), .Cells(UBound(arrData,  2 ) +  1 , UBound(arrData,  1 ) +  1 )) = _
            Application.Transpose(arrData)
    End With
    
    rs.Close
    Set rs = Nothing
    cn.Close
    Set cn = Nothing
End Sub


KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Заполненеи строки Excel из рекордсета... / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]