Что нового

Прогресс-бар для Excel/VBA, реализованный средствами Autoit

Статус
Закрыто для дальнейших ответов.

yshindin

Новичок
Сообщения
1
Репутация
1
AutoIt: 3.
Версия:3.3.6.1

Категория: Автоматизация, Интеракция, Система / Реестр, Элементы GUI, Разное

Описание:
Для приложений, написанных на Excel/VBA существует достаточно много примеров реализации прогресс-бара, напр., http://spreadsheetpage.com/index.php/tip/displaying_a_progress_indicator/.

На практике встречаются ситуации, когда выполняется длительная команда для Excel (напр., обновление рабочей книги или обновление сводной таблицы данными с OLAP-сервера). В таких ситуациях прогресс-бар не может обновляться, пока не закончена длительная операция. Это приводит к длительному "замиранию" прогресс-бара, что вызывает некоторый дискомфорт в работе пользователя.

Предлагаемое оешение (см. файл вложения) содержит демонстрационный пример: рабочая книга Excel с макросами и скрипт на Autoit. При исполнении рабочего приложения я использую откомпилированный вариант скрипта (предлагаю перед прогоном примера откомпилировать приложенный в архиве скрипт в исполнимый файл .exe средствами Autoit).

Смысл реализованного прогресс-бара - добавить возможность асинхронного обновления прогресс-бара. Сначала стартуется макрос из Excel путем нажатия на кнопку "Run Example of APB (Autoit Progress Bar)". Основное Excel-приложение запускает Autoit-скрипт, а далее через системный реестр передает скрипту команды. То есть, основное приложение (VBA/Excel) и сателлит (скрипт на Autoit) работают параллельно. Скрипт в цикле (c конфигурируемой задержкой) читает реестр и выполняет полученные команды. По полученным командам скрипт обновляет прогресс-бар.

Одна из команд - AutoShow - позволяет выполнять автоматическое периодическое обновление прогресс-бара от начального до конечного значения, что позволяет "сгладить" процесс обновления прогресс-бара в случае длительно исполняемого процесса на стороне Excel-приложения.

В архив входят рабочая книга, скрип и краткое описание процесса взаимодействия Excel-приложения со скриптом.

Пример не лишен недостатков, в частности, взаимодействие Excel и Autoit могло бы быть реализовано более эффективным способом (буду рад вашим предложениям с с примерами реализации такого взаимодействия).

Код/Пример:
Код:

Файл: http://

Снимок:


История версий:

Источник:
Автор(ы):
 

RUVATA

лучше один раз увидеть, чем десять раз услышать...
Сообщения
132
Репутация
38
А почему, Вас не устраивает реализация прогресс-бара средствами самого VBA?
Зачем вообще прикручивать AutoIt ?
VBA - имеет огромный спектр возможностей.
Я использую связку Excel & AutoIt только в одном случае, когда надо пассивно например собрать данные с нескольких таблиц, а в процессе еще и файлики перемещать/переименовывать/удалять.
 
Статус
Закрыто для дальнейших ответов.
Верх