powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA+Excel+открытие dbf файла более 65000 строк
7 сообщений из 7, страница 1 из 1
VBA+Excel+открытие dbf файла более 65000 строк
    #36211827
Omela
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите решить проблему!

В dbf файле около 400 тыс. строк, необходимо его открыть (при выполнении макроса) в Excel так, чтобы при открытии его содержимое делилось на листы. В среднем получается 7 листов.
Пока через специальный dbf редактор дробиться на более мелкие dbf, а потом открывается в Excel и сливается в одну книгу, что достаточно трудозатратно.
Код для разбивки на листы я написала, на dbf менее 65000 он прекрасно и быстро работает, но по всей видимости ADODB.Recordset не поддерживает такое кол-во строк, потому что при запуске макроса на большом файле выпадает ошибка: "Run-Time Error '-2147467259 (80004005)' Automation Error Неопознанная ошибка"
Что можно придумать?
...
Рейтинг: 0 / 0
VBA+Excel+открытие dbf файла более 65000 строк
    #36211907
Фотография by-pass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мысли вслух:
нигде тип Integer в коде не используется ?
в бейсике под него отводится два байта = 65535
...
Рейтинг: 0 / 0
VBA+Excel+открытие dbf файла более 65000 строк
    #36211989
Фотография BION
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Omela,

Вы бы код выложили, а то так сходу трудно сказать.
...
Рейтинг: 0 / 0
VBA+Excel+открытие dbf файла более 65000 строк
    #36212203
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Omelaно по всей видимости ADODB.Recordset не поддерживает такое кол-во строк,
ну вот это совсем не очевидно.
...
Рейтинг: 0 / 0
VBA+Excel+открытие dbf файла более 65000 строк
    #36212408
Omela
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BION,

Код: 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.
36.
37.
38.
39.
Dim cn As New ADODB.Connection, rs As New ADODB.Recordset, sh As Worksheet

Const cstrBase As String = "C:\EXPORT\" 'Директория с файлами dbf
n =  1 
t =  2 
With cn
    .Provider = "Microsoft.Jet.OLEDB.4.0"
    .ConnectionString = "Data Source=" & cstrBase & ";Extended Properties=dBase IV"
    .Open
 
    Set rs = .Execute("SELECT * FROM  tab")

    For i =  0  To rs.Fields.Count -  1 
        sh.Cells( 1 , i +  1 ).Value = rs.Fields(i).Name
    Next i

    If Not (rs.EOF And rs.BOF) Then rs.MoveFirst

    Do Until rs.EOF
    If t >  65000  Then
       Set sh = Application.Worksheets.Add
       sh.Name = "part" + Str(n)
       For i =  0  To rs.Fields.Count -  1 
           sh.Cells( 1 , i +  1 ).Value = rs.Fields(i).Name
       Next i
       t =  2 
       n = n +  1 
    End If
    
    For j =  0  To rs.Fields.Count -  1 
        sh.Cells(t, j +  1 ).Value = rs.Fields(j).Value
    Next j
    
    rs.MoveNext
    t = t +  1 
    Loop
    .Close
End With


это код из кнопки... открывается файл tab.dbf из директории C:\EXPORT\ заполняются заголовки и содержимое файла в Excel. При достижении 65000 записей идет добавление нового листа и продолжение файла. На файлике до 30 тыс. записей работает хорошо. Разбивала по 5 тыс. записей по листам. Стала на большом файле тестить - сразу ошибка выпала.
Debug на строке: Set rs = .Execute("SELECT * FROM tab")
...
Рейтинг: 0 / 0
VBA+Excel+открытие dbf файла более 65000 строк
    #36212647
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
возможно ошибка связана с отсутствием памяти для рекордсета или истечение таймаута
попробуйте поигратся параметрами

TimeOut - на конекшене
CursorLocation - на рекордсете

I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
VBA+Excel+открытие dbf файла более 65000 строк
    #36212957
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HandKot,

+1 и ТС советую почитать про курсоры-брандспойты.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA+Excel+открытие dbf файла более 65000 строк
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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