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

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

Вы бы код выложили, а то так сходу трудно сказать.
...
Рейтинг: 0 / 0
23.09.2009, 11:51
    #36212203
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA+Excel+открытие dbf файла более 65000 строк
Omelaно по всей видимости ADODB.Recordset не поддерживает такое кол-во строк,
ну вот это совсем не очевидно.
...
Рейтинг: 0 / 0
23.09.2009, 13:00
    #36212408
Omela
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA+Excel+открытие dbf файла более 65000 строк
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
23.09.2009, 14:31
    #36212647
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA+Excel+открытие dbf файла более 65000 строк
возможно ошибка связана с отсутствием памяти для рекордсета или истечение таймаута
попробуйте поигратся параметрами

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

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

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


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