Страница 1 из 1

Быстрее ли VB, чем VBA и как сделать экспорт/импорт с Excel?

Добавлено: 10 фев 2008, 10:03
Anatole
Добрый день.
Есть макрос на VBA, скорость работы которого меня не устраивает. Суть работы макроса - считывает с рабочего листа Excel численные данные, обрабатывает по заданному алгоритму, результаты вываливает обратно на листы Excel.
Есть, ощущение, что если бы алгоритм был реализован в скомпилированном приложении на VB, то скорость бы возросла. Я знаю основы VBA, но никогда не занимался VB, потому хочу оценить насколько перспективна такая возможность решения проблемы. То есть будет ли реально приложение работать быстрее? Примерно во-сколько раз?
И через какие объекты или операторы из VB можно открыть нужную книгу Excel, считать данные с нужного диапазона, и как обратно создать в этой книге новый лист, разместить на них данных из массива и сохранить эту книгу?

С уважением, Анатолий

Re: Быстрее ли VB, чем VBA и как сделать экспорт/импорт с Excel?

Добавлено: 10 фев 2008, 16:22
Pavel55
А как вы считываете данные с листа и как вы их обратно на лист переносите?

Re: Быстрее ли VB, чем VBA и как сделать экспорт/импорт с Excel?

Добавлено: 10 фев 2008, 18:18
Anatole
В своей процедуре я считываю данные с рабочего листа Excel. Код конкретно такой:

For Row = 1 To NumRows + 1
WorkMas(Row, 1) = Sheets(DataSheet).Cells(Row + RowFirst - 1, 1)
WorkMas(Row, 2) = Sheets(DataSheet).Cells(Row + RowFirst - 1, 3)
WorkMas(Row, 3) = Sheets(DataSheet).Cells(Row + RowFirst - 1, 5)
WorkMas(Row, 4) = Sheets(DataSheet).Cells(Row + RowFirst - 1, 6)
WorkMas(Row, 5) = Sheets(DataSheet).Cells(Row + RowFirst - 1, 7)
WorkMas(Row, 6) = Sheets(DataSheet).Cells(Row + RowFirst - 1, 8)
Next Row

Здесь WorkMas() - рабочий массив.
Вывод делаю так:

Set PrintRange = Sheets(Sheets.Count).Range(Cells(1, 1), Cells(65001, 11 + Months))
PrintRange.Value = Result

Здесь Result() - массив с результатами, который я ставлю на последний (Sheets.Count) рабочий лист.