Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Как ускорить чтение из Excel Добавлено: 07.07.05 10:32  

Автор вопроса:  Бзымянный чуловек 26
Из внешней программы (VB .NET) читается из листа EXcel следующим образом

Xls = CreateObject("Excel.Application")
oXls.Workbooks.Open(TextBox1.Text)

for i = 1 to j
...= oXls.Cells.Range("a" & CStr(i)).Formula
next i

j что-то около 20000

и лист считывается около 10 минут!

как ускорить чтение?

Ответить

  Ответы Всего ответов: 7  

Номер ответа: 1
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #1
Добавлено: 07.07.05 11:19
Должны быть какие нибудь команды типа Выгрузить. Поищи в хелпе.

Ответить

Номер ответа: 2
Автор ответа:
 Дмит



Вопросов: 11
Ответов: 160
 Web-сайт: dimit.pochta.ru
 Профиль | | #2
Добавлено: 07.07.05 23:41
Читай сразу в массив variant:
Dim Mass As Variant
Mass = oXls.Cells.Range("A1:A20";)

Ответить

Номер ответа: 3
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #3
Добавлено: 14.07.05 13:03
CyRax, как по-твоему ускорится его программа путём Выгрузить!? Глупости говоришь!

= oXls.Cells(i,1).Formula
так одной строковой операцией меньше, не находите?

Да, Дмит, в массив считать - это хорошо. Тогда уж не в Variant, а в строковый, ведь явно нужны формулы, а не сам диапазон, а это строки..

Видел пример, который разгонял чтение из XL за счёт использования коллекций. Точно суть не помню, поэтому врать не стану..

Ответить

Номер ответа: 4
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #4
Добавлено: 14.07.05 13:50
Синтаксическая поправочка..

Dim Mass() As Variant
Mass = oXls.Cells.Range("A1:A20000";)

Ответить

Номер ответа: 5
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #5
Добавлено: 14.07.05 15:02
CyRax, как по-твоему ускорится его программа путём Выгрузить!? Глупости говоришь!

 В 1С-ке такой метод есть при работе с таблицами. Думал и в VBA подобное имеется.

Ответить

Номер ответа: 6
Автор ответа:
 someone



Вопросов: 215
Ответов: 1596
 Web-сайт: 123
 Профиль | | #6
Добавлено: 14.07.05 16:07
[OFF] нет, безымянный ник все же неудобен тем что Павлу некогда доискаться до ссылки на профиль и черепок влепить ;) автор, смени ник![/OFF]

Ответить

Номер ответа: 7
Автор ответа:
 Дмит



Вопросов: 11
Ответов: 160
 Web-сайт: dimit.pochta.ru
 Профиль | | #7
Добавлено: 17.07.05 13:35
mc-black

Вариант - Dim Mass As Variant
считаю лутше, т.к. создаётся одна переменная (в которой может быть и массив), а не массив переменных variant.
Впрочем всё зависит от дальнейшего кода

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам