powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel, VBA (вывод 250 тыс строк из рекордсета)
22 сообщений из 22, страница 1 из 1
Excel, VBA (вывод 250 тыс строк из рекордсета)
    #36035785
Нович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Столкнулся с пределом вывода строк на Экселевский лист из рекордсета. Есть ли стандартное решение на VBA, чтобы при заполнении одного листа (~65 тыс. строк) переходил на заполнение последующих?
...
Рейтинг: 0 / 0
Excel, VBA (вывод 250 тыс строк из рекордсета)
    #36036042
nporaMep
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а как выводится на один лист хотя бы?
...
Рейтинг: 0 / 0
Excel, VBA (вывод 250 тыс строк из рекордсета)
    #36036116
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НовичСтолкнулся с пределом вывода строк на Экселевский лист из рекордсета. Есть ли стандартное решение на VBA, чтобы при заполнении одного листа (~65 тыс. строк) переходил на заполнение последующих?Мазохист. Не занимайся ерундой. Никто твои тысячи строк читать не будет.
...
Рейтинг: 0 / 0
Excel, VBA (вывод 250 тыс строк из рекордсета)
    #36036209
f
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делай рекордсеты поменьше. Создай несколько и разбрасывай по разным листам.
...
Рейтинг: 0 / 0
Excel, VBA (вывод 250 тыс строк из рекордсета)
    #36036217
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НовичСтолкнулся с пределом вывода строк на Экселевский лист из рекордсета
не удивительно, если excel 2000, как по-вашему он распихает 250 тыс. строк в 65 тысяч максимальных на листе????

PS. не предназначен excel для этого...
...
Рейтинг: 0 / 0
Excel, VBA (вывод 250 тыс строк из рекордсета)
    #36036785
Нович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nporaMepа как выводится на один лист хотя бы?

Код: 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.
 
    Dim server As String:   server = "s.org"
    Dim UserId As String:   UserId = "r"
    Dim Passwo As String:   Passwo = "r"
    
    Dim con As ADODB.Connection
    Dim rst As ADODB.Recordset
    
    Set con = New ADODB.Connection
    Set rst = New ADODB.Recordset
    
    
    con.Open "Provider=SQLOLEDB;Persist Security Info=False;Password=" & Passwo & ";User ID=" & UserId & ";Data Source=" & server
    Set rst.ActiveConnection = con
    rst.Open "select * from n '", con, adOpenStatic, adLockOptimistic, adCmdText
   
    Dim i As Integer
    Do While Not rst.EOF
        i = i +  1 
        Cells(i +  1 ,  1 ).Value = i
        Cells(i +  1 ,  2 ).Value = rst.Fields![pr]
        Cells(i +  1 ,  3 ).Value = rst.Fields![dr]
        Cells(i +  1 ,  4 ).Value = rst.Fields![nm]        
        rst.MoveNext
    Loop
  
    rst.Close:  Set rst = Nothing
    con.Close:  Set con = Nothing

Довольно всё простенько, теперь нужно бы добавить счётчик в запрос и порезать рекордсет на части. Вопрос в том, что не понятно сколько рекордсетов будет всего.
...
Рейтинг: 0 / 0
Excel, VBA (вывод 250 тыс строк из рекордсета)
    #36037051
Korcar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если так уж очень надо, то введи счетчик, который после каждой 65536-й записи будет создавать новый лист.
+ в выводе, обращайся к ачейкам начиная с листа, чтобы можно было управлять ходом вывода: на какой лист записывать

только 250 тыс записей перекидывать таким образом в эксель займет тучу времени. выспаться можно будет))) имхо
...
Рейтинг: 0 / 0
Excel, VBA (вывод 250 тыс строк из рекордсета)
    #36037320
f
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот в этой строке
Код: plaintext
rst.Open "select * from n '", con, adOpenStatic, adLockOptimistic, adCmdText
нужно добавить критерий отбора

Код: plaintext
select * from n Where...
...
Рейтинг: 0 / 0
Excel, VBA (вывод 250 тыс строк из рекордсета)
    #36043036
nporaMep
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: 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.
35.
 Dim server As String:   server = "s.org"
    Dim UserId As String:   UserId = "r"
    Dim Passwo As String:   Passwo = "r"
    
    Dim con As ADODB.Connection
    Dim rst As ADODB.Recordset
    
    Set con = New ADODB.Connection
    Set rst = New ADODB.Recordset
    
    
    con.Open "Provider=SQLOLEDB;Persist Security Info=False;Password=" & Passwo & ";User ID=" & UserId & ";Data Source=" & server
    Set rst.ActiveConnection = con
    rst.Open "select * from n '", con, adOpenStatic, adLockOptimistic, adCmdText
   
    Dim i As Long
    Dim j as Long
    j= 0 
    Dim ws as Worksheet
    set ws = ActiveSheet
    Do While Not rst.EOF
        i = i +  1 
        if i =  65537  then
           set ws = worksheets.add
           i= 1 
           j=j+ 65536 
        end if
        ws.Cells(i +  1 ,  1 ).Value = i+j
        ws.Cells(i +  1 ,  2 ).Value = rst.Fields![pr]
        ws.Cells(i +  1 ,  3 ).Value = rst.Fields![dr]
        ws.Cells(i +  1 ,  4 ).Value = rst.Fields![nm]        
        rst.MoveNext
    Loop
  
    rst.Close:  Set rst = Nothing
    con.Close:  Set con = Nothing
...
Рейтинг: 0 / 0
Excel, VBA (вывод 250 тыс строк из рекордсета)
    #36043100
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nporaMep,
Нет слов !
Про CopyFromRecordset никто не слышал что ли ?
...
Рейтинг: 0 / 0
Excel, VBA (вывод 250 тыс строк из рекордсета)
    #36043156
Фотография qwrqwr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
big-dukeНет слов !
Про CopyFromRecordset никто не слышал что ли ?какое там
сюда взгляните (лучше при этом сидеть, а не стоять )
http://www.sql.ru/forum/actualthread.aspx?tid=669310#7261110
...
Рейтинг: 0 / 0
Excel, VBA (вывод 250 тыс строк из рекордсета)
    #36043474
Нович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
big-dukenporaMep,
Про CopyFromRecordset никто не слышал что ли ?
А как им разбить рекордсет на n-цать частей?
...
Рейтинг: 0 / 0
Excel, VBA (вывод 250 тыс строк из рекордсета)
    #36043510
Фотография qwrqwr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нович, на каждой несломанной клавиатуре имеется кнопка F1
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
    Set con = New ADODB.Connection
    Set rst = New ADODB.Recordset

    con.Open "бла-бла-бла"
    rst.Open "select * from Таблица", con

    Dim ws As Worksheet
    Do Until rst.EOF
        Set ws = Worksheets.Add
        ' в 1ую строку названия полей - по желанию
        ws.Range("A2").CopyFromRecordset rst,  65000 
    Loop
    
    rst.Close
    con.Close
...
Рейтинг: 0 / 0
Excel, VBA (вывод 250 тыс строк из рекордсета)
    #36043746
Нович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чтобы не плодить новые ветки:
Подскажет ли всезнающий All код вставки последующего листа не до активного, а после него?
...
Рейтинг: 0 / 0
Excel, VBA (вывод 250 тыс строк из рекордсета)
    #36043793
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нович,
вам же сказали - купите клавиатуру, на которой есть кнопка ф1.
...
Рейтинг: 0 / 0
Excel, VBA (вывод 250 тыс строк из рекордсета)
    #36520671
РЕС
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
qwrqwrНович, на каждой несломанной клавиатуре имеется кнопка F1
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
    Set con = New ADODB.Connection
    Set rst = New ADODB.Recordset

    con.Open "бла-бла-бла"
    rst.Open "select * from Таблица", con

    Dim ws As Worksheet
    Do Until rst.EOF
        Set ws = Worksheets.Add
        ' в 1ую строку названия полей - по желанию
        [SIZE= 3 ]ws.Range("A2").CopyFromRecordset rst[/SIZE],  65000 
    Loop
    
    rst.Close
    con.Close

А вот у меня похожая конструкция не работает (никак не ругается, просто на лист ничего не выводит хоть тресни!). Причем библиотеки вроде все подключены, запрос рабочий, данные в рекордсет возвращаются (проверял). Win XP(sp2), MS Office-2003(sp3), БД Oracle.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Sub proba() 
Dim sis As New ADODB.Connection 
sis.ConnectionString = "Provider=MSDAORA.1;Password=***;User ID=***;Data Source=***;Persist Security Info=True" 
sis.Open 
Dim ogranMax As New ADODB.Recordset 
ogranMax.CursorType = adOpenStatic 
   ogranMax.Open "SELECT ....", sis 
   ogranMax.MoveFirst 
    
Range("A1").CopyFromRecordset ogranMax 

ogranMax.Close 
sis.Close 
End Sub
...
Рейтинг: 0 / 0
Excel, VBA (вывод 250 тыс строк из рекордсета)
    #36520862
Фотография qwrqwr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
РЕС
похожая конструкция не работает
Код: plaintext
1.
2.
3.
...    
Range("A1").CopyFromRecordset ogranMax 
...

Range Property - F1Remarks
When used without an object qualifier, this property is a shortcut for ActiveSheet.Range (it returns a range from the active sheet; if the active sheet isn’t a worksheet, the property fails).
Указывайте к какому листу относится Range("A1").
Код: plaintext
Workbooks("MyBook.xls").Worksheets("Sheet1").Range("A1")
...
Рейтинг: 0 / 0
Excel, VBA (вывод 250 тыс строк из рекордсета)
    #36520919
РЕС
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Неа, видимо проблема не в этом. Проблема осталась. Не помогает также и создание нового (приложения Экселя/книги/листа) как объекта.
...
Рейтинг: 0 / 0
Excel, VBA (вывод 250 тыс строк из рекордсета)
    #36520946
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
РЕС, а выводить содержимое рекордсета на лист в цикле пробовали?
...
Рейтинг: 0 / 0
Excel, VBA (вывод 250 тыс строк из рекордсета)
    #36520975
РЕС
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vlthРЕС, а выводить содержимое рекордсета на лист в цикле пробовали?
Хех, с этого и начинал. Не понравилось - долго
...
Рейтинг: 0 / 0
Excel, VBA (вывод 250 тыс строк из рекордсета)
    #36521092
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
РЕС, ясно, что не быстро. Зато очевидно, что рекордсет заполняется.

Попробуйте определить свойство CursorLocation=adUseClient (по умолчанию CursorLocation=adUseServer)
...
Рейтинг: 0 / 0
Excel, VBA (вывод 250 тыс строк из рекордсета)
    #36521214
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
Откуда известно, что она не работает?
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel, VBA (вывод 250 тыс строк из рекордсета)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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