powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Заполненеи строки Excel из рекордсета...
8 сообщений из 8, страница 1 из 1
Заполненеи строки Excel из рекордсета...
    #34346685
Assai
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет.
Можно ли заполнить строку Excel из рекордсета, не обращаясь к каждому его полю, а просто, грубо говоря, выкинув его на лист...
Спасибо.
...
Рейтинг: 0 / 0
Заполненеи строки Excel из рекордсета...
    #34346716
Фотография klen_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Заполненеи строки Excel из рекордсета...
    #34346723
lena_####
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Заполненеи строки Excel из рекордсета...
    #34347077
Assai
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А нельзя заполнить, скажем из трех выбранных столбцов рекордсета, а не из всех?
...
Рейтинг: 0 / 0
Заполненеи строки Excel из рекордсета...
    #34347355
lena_####
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Assai

При открытии Recordset, в качестве аргумента Source метода Open приведите подходящую строку SQL, тогда в Recordset попадут данные только из нужных полей. А потом вставляйте все целиком с помощью CopyFromRecordse
...
Рейтинг: 0 / 0
Заполненеи строки Excel из рекордсета...
    #34350352
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Заполненеи строки Excel из рекордсета...
    #34350467
sWard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А может быть, без извратов?! через MS Query из MS Access 97 database - хватай любой рекордсет - и оппа! типа - select field1, field 3, field 145 from [query1]
...
Рейтинг: 0 / 0
Заполненеи строки Excel из рекордсета...
    #34351077
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Заполненеи строки Excel из рекордсета...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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