Доброго времени суток!
Предыстория – личный опыт
Хочу поделиться своим опытом использования надстроек, которые позволяют автоматизировать процесс разработки макросов в Visual Basic Editor MS Excel (далее VBE). В результате которого я разработал свою надстройку для разработки макросов VBA.
В процессе работы с существующими «com» — надстройками (Smart Indenter, VBE Tools, Invisible Basic), столкнулся со следующими трудностями:
отсутствие возможности пользователю самому управлять процессом установки и удаления надстройки не имеющих прав администратора. Иногда приходится работать за несколькими компьютерами и бывает необходимость оперативно установить надстройку без дополнительных согласований с администратором.
ограниченный функционал — зачастую, в существующих надстройках используется один или два инструмента, что создает необходимость устанавливать дополнительные надстройки. Что также вызывает трудность, описанную в первом пункте.
отсутствие версий надстроек, совместимых с 64 bit версиями MS Excel, что создает ограничение в использовании либо MS Excel 64 bit либо надстройки.
большинство надстроек остались в далеком прошлом, и на текущий момент не поддерживаются авторами.
По полученному личному опыту использования надстроек был сформирован перечень свойств, которыми должна обладать надстройка для MS Excel VBA:
должна быть конструктором — давать пользователю возможность самому расширять или сокращать функционал надстройки
поддерживать все версии MS Excel, в том числе 32 и 64 — разрядные
установка и удаление без участия администратора
открытый исходный код — с точки безопасности, хочется знать, что там внутри!
По функционалу хотелось получить надстройку способную, не много, приблизить VBA к современным средам разработки (IDE). А именно автоматическое форматирование стиля кода, авто нумерация строк кода, использование сниппетов при написании кода.
Разработка надстройки
Разработанная надстройка имеет следующие преимущества, по сравнению с другими инструментами разработки в VBA:
Параметры | xlam | com |
дополнительное ПО при изменении кода надстройки | не нужно | нужно |
самостоятельная установка без прав администратора | да | нет |
поддержка версии Excel 32 bit и 64 bit | один установочный файл | два установочных файла |
знание дополнительных ЯП | не нужно | нужно |
создание диалоговых окон для редактора VBE | нет | да |
Создание «горячих клавиш» для редактора VBE | Решено с использование AutoHotkey, написана подключаемая dll | да |
Так же для использования преимуществ «com» надстроек был разработан модуль подключения различных «dll» библиотек, которые значительно расширяют данную надстройку. Но несут ограничения, описанные выше.
В итоге получилась надстройка «конструктор», в которой функционал легко расширяется как инструментами встроенными MS Excel, так и «dll» библиотеками. Что позволяет легко комбинировать нужный функционал надстройки.
В процессе разработки использовался: Ribbon XML Editor — редактор XML файлов интерфейса, инструмент для создания собственной вкладки в ленте MS Excel со встроенным редактором кода VBA.
ИТОГ: Надстройка – Macro Tools VBA
![Панель инструментов надстройки Macro Tools VBA в Excel Панель инструментов надстройки Macro Tools VBA в Excel](https://habrastorage.org/getpro/habr/upload_files/639/9df/7fb/6399df7fbfc25281882a772bbc5096a7.png)
![Панель инструментов надстройки Macro Tools VBA в редакторе кода VBE Панель инструментов надстройки Macro Tools VBA в редакторе кода VBE](https://habrastorage.org/getpro/habr/upload_files/1d3/15a/56a/1d315a56ac20b491bc7f5a4d3f9a5b7c.png)
В результате разработки надстройки «Macro Tools VBA», удалось реализовать следующие инструменты:
настройка шаблона «стиля» кода, по которому будет автоматически выполняться форматирование кода отступами;
![Инструмент форматирования кода Инструмент форматирования кода](https://habrastorage.org/getpro/habr/upload_files/23f/57b/61d/23f57b61d51c3f18b1436441b0e24a62.gif)
сниппеты — хранилище готовых шаблонов кода, которые часто используются при написании макросов;
![Инструмент использования сниппетов кода Инструмент использования сниппетов кода](https://habrastorage.org/getpro/habr/upload_files/5a4/ce2/2db/5a4ce22db2e93390739fe721f3decfad.gif)
автонумерация строк кода;
![Инструмент автонумерации строк кода Инструмент автонумерации строк кода](https://habrastorage.org/getpro/habr/upload_files/aba/259/f17/aba259f1745082685f1e2bc2d48b04e9.gif)
настройка LOG-файлов, процесса выполнения программы VBA;
микро подстройка элементов форм;
конструкторы процедур, сообщений (MsgBox) и форматов числовых данных;
снятие паролей с листов книги Excel и проектов VBA;
статистика кодовой базы;
и другие инструменты.
Заключение
В результате получился инструмент, не уступающий по функционалу существующим надстройкам, но лишенный недостатков описанных в данной статье.
Кому интересна, надстройка то её можно получить тут: Macro Tools VBA — инструменты разработки макросов VBATools
Для желающих поковыряться в коде GitHub репозитории надстройки: https://github.com/vbatools/MacroToolsVBA
Спасибо за внимание!