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

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Anatole
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 10.02.2008 (Вс) 7:14

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

Сообщение Anatole » 10.02.2008 (Вс) 10:00

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

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

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 10.02.2008 (Вс) 10:08

По второй части вопроса поищи по "Excel.Application".
Объекты будут те же саиые, что и в VBA.

Что же касается первой части вопроса, то что именно тебя не устраивает в скорости? Вернее, скорость на каком участке?
Если именно в обработке уже считанных численных значений, то тогда перенос алгоритма в VB работу ускорит.
Если же тормоза заключаются в том, что данные медленно извлекаются из листа Excel и медленно записываются в него, то тут тебе VB не поможет.
Попробуй перед запуском своей процедуры сделать следующее:
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Application.Calculation = xlManual
а после вернуть обратно. Можешь даже на время расчетов сделать Excel невидимым, Application.Visible = False, тоже несколько ускорит.
Lasciate ogni speranza, voi ch'entrate.

Anatole
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 10.02.2008 (Вс) 7:14

Хорошо, спасибо

Сообщение Anatole » 10.02.2008 (Вс) 10:20

Основное время работы, 99% или больше, как раз приходится на обработку данных. Необходимо ускорить именно пересчет. А считывание и обратное размещение совершенно устраивает.

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

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 10.02.2008 (Вс) 11:44

Anatole
Математика на скомпиленном в Native VB будет работать раз в 15 быстрее, проверял. Работа со строками ускоряется не сильно.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: The trick и гости: 70

    TopList  
cron