Полезности для VBA программиста

Если вы произносите слово "макрОсы" с придыханием от ужаса и ударением на втором слоге, а фраза "Visual Basic for Applications" для вас звучит как заклинание, то эта статья - не для вас. Во всяком случае - пока :)

Если же у вас за плечами есть хоть какой-то опыт программирования макросов на VBA в Excel, и вы не планируете останавливаться, то приведенная ниже подборка полезных надстроек и программ должна вам (хотя бы частично) пригодиться.

MZ-Tools - "швейцарский нож" для программиста

После установки в редакторе VBE в меню Tools появится подменю MZ-Tools и новая панель инструментов для быстрого вызова тех же функций:

vba-programmer1.png

Умеет очень и очень много. Из самого ценного, на мой взгляд:

  • Автоматически добавлять "рыбы-заготовки" для создания процедур, функций, обработчиков событий и ошибок с правильным наименованием переменных по венгерской системе.
  • Копировать элементы управления на пользовательских формах вместе с их кодом.
  • Делать закладки (Favorites) на процедуры и быстро к ним переходить в большом проекте.
  • Разбивать длинные строки кода на несколько и собирать обратно (split и combine lines).
  • Выдавать подробную статистику по проекту (кол-во строк кода, процедур, элементов на формах и т.д.)
  • Проверять проект на наличие неиспользуемых переменных и процедур (Review Source)
  • Создать свою базу заготовок кода (Code Templates) для типичных случаев и быстро вставлять их потом в новые макросы.
  • Автоматически создавать длинную и страшную строку для подключения к внешним источникам данных по ADO.
  • Вешать горячие клавиши на любую функцию из надстройки.

Однозначный мастхэв для программиста любого уровня. Если у вас последняя версия Office, то скачивайте обязательно свежую версию MZ-Tools 3.00.1218 от 1 марта, т.к. в ней исправлен баг, при работе с Excel 2013.  

Ссылка на скачивание MZ-Tools

Smart Indenter - автоматическая расстановка отступов в коде

Хорошо делает одну простую, но очень нужную операцию - автоматически расставляет отступы табуляции в коде VBA, наглядно выделяя вложенные циклы, проверки условий и т.д.

vba-programmer3.png

Очень удобно повесить это действие на любое удобное сочетание клавиш в разделе Indenting Options и делать в одно касание.

К сожалению, автор программы забросил ее в 2005 году (почему, Карл!?) и последняя версия на сайте предназначена для Excel 97-2003. Тем не менее, программа вполне успешно работает и с более новыми версиями. Единственный нюанс: если у вас Excel 2013, то перед установкой Smart Indenter нужно установить сначала MZ-Tools последней версии, т.к. она содержит нужную для работы Indenter'а динамическую библиотеку.

Ссылка на скачивание Smart Indenter

VBE Tools - микроподстройка элементов в формах

Выравнивание элементов управления (кнопок, полей ввода, текстовых надписей и т.д.) на сложной форме может быть весьма мучительным процессом. Стандартная привязка к сетке редактора через меню Tools - Options - General - Align Controls to Grid иногда не очень помогает и даже начинает мешать, особенно если нужно сдвинуть, например, кнопку совсем на чуть-чуть. В этом деле поможет надстройка VBE Tools, которая после установки отобразить простую панельку, где можно для выбранного элемента произвести микроподстройку размеров и положения на форме:

vba-programmer4.png

Сдвиг положения также можно будет делать с помощью сочетаний клавиш Alt+стрелки, а изменение размеров с помощью Shift+Alt+стрелки и Ctrl+Alt+стрелки.

Также по щелчку правой кнопки мыши по элементу можно его переименовать сразу вместе с кодом.

Ссылка на скачивание VBE Tools

VBA Diff - поиск отличий в коде

Этот инструмент пригодится, пожалуй, больше профессиональным программистам на VBA при создании больших и сложных проектов или совместной разработке. Его основная функция - сравнивать два проекта и наглядно отображать разницу в коде между ними:

vba-programmer5.png

Есть 30-дневный бесплатный период, а потом надстройка попросит заплатить за нее 39 фунтов (около 3.5 тыс.руб по текущему курсу).

Говоря откровенно, мне она пригодилась в этой жизни всего раза 3-4 на супербольших проектах, но сэкономила мне тогда несколько дней и много-много нервных клеток :) Ну и всегда есть, конечно, бесплатная альтернатива: экспортировать код в текстовый файл (правой кнопкой мыши по модулю - Export) и сравнивать их потом в Microsoft Word с помощью команды Рецензирование - Сравнить документы, но с помощью VBA Diff это на порядок удобнее.

Ссылка на скачивание VBA Diff

Moqups и Wireframe Sketcher - прототипирование интерфейса

При создании сложных интерфейсов для взаимодействия с пользователем очень удобно бывает заранее спроектировать примерный внешний вид диалоговых окон, т.е. выполнить прототипирование. По факту, это оказывается гораздо проще, чем переделывать потом готовые формы и их код. Помню, как-то раз в одном из проектов заказчик просил сделать "меню", имея ввиду "вкладки". Полдня работы псу под хвост :(

Существует огромное количество платных и бесплатных программ разного уровня сложности и мощи для этих задач. Я таких программ и сервисов перепробовал с десяток, и в последнее время чаще всего использую Moqups:

vba-programmer6.png

Это онлайновый редактор, который:

  • Не требует установки отдельных программ. Всегда можно приехать к клиенту в офис и прямо на сайте открыть-показать-подправить созданный интерфейс.
  • Содержит все основные элементы диалоговых окон (надписи, кнопки, вып.списки и т.д.) в вариантах для Windows и Mac.
  • Позволяет экспортировать созданный интерфейс в PNG или PDF форматах или отправить клиенту ссылочку для просмотра онлайн.
  • Фактически бесплатен. Есть ограничения на количество графических элементов, но мне еще ни разу не удалось за них выйти. Если не будет хватать места или захочется хранить сразу несколько больших проектов, то всегда можно перейти на премиум-версию за 99$ в год.

В общем и целом, для задач разработчика на VBA - более, чем достаточно, я считаю.

Если для кого принципиально нужен офлайновый вариант (для работы без доступа к интернету на берегу моря, например), то рекомендую Wireframe Sketcher:

vba-programmer7.png

После бесплатного демо-периода на 2 недели попросит купить за те же 99$.

Ссылка на Moqups

Ссылка на скачивание Wireframe Sketcher

Invisible Basic - обфускатор кода

Надежно закрыть исходный код ваших макросов паролем в Microsoft Excel, к сожалению, невозможно. Однако, существует целый класс программ, называемых обфускаторами (от англ. obfuscate - сбивать с толку, запутывать), которые так меняют внешний вид VBA-кода, что прочитать и понять его будет крайне сложно, а именно:

  • имена переменных, процедур и функций заменяются на длинные бессмысленные наборы символов или, наоборот, на короткие буквенные непонятные обозначения
  • убираются наглядные отступы табуляции
  • убираются или, наоборот, хаотично ставятся переносы строк и т.д.

Откровенно говоря, я не фанат использования подобных методов. В частности, с PLEX я решил, что лучше буду отдавать покупателям полной версии открытый, понятный и прокомментированный исходный код - это мне кажется более правильным. Тем не менее, у моих знакомых программистов неоднократно были случаи, когда подобная программка очень пригодилась бы (программист выполнил работу, а клиент не заплатил и т.д.) Так что если понадобится - знайте, где взять. "Мы мирные люди, но наш бронепоезд..." и все такое.

Скачать Invisible Basic

Code Cleaner - очистка кода

В процессе работы над проектом (особенно, если он большой и долгий) в модулях кода и формах начинает накапливаться "мусор" - обрывки служебной информации редактора VBE, которые могут привести к неожиданным и нежелательным глюкам. Утилита Code Cleaner чистит эту гадость простым, но надежным способом: экспортирует код из модулей в текстовые файлы, а потом импортирует его чистеньким обратно. Очень рекомендую при работе над большими проектами периодически проводить такую "уборку".

Ссылка на скачивание Code Cleaner

Ribbon XML Editor

Если для запуска ваших макросов хочется создать на ленте Excel собственную вкладку с красивыми кнопками, то вам не обойтись без редактора XML-файлов интерфейса. Однозначно, самым удобным и мощным на сегодняшний день является в этом плане отечественная программа Ribbon XML Editor, созданная Максимом Новиковым.

vba-programmer8.png

Совершенно замечательный софт, который:

  • позволит легко добавлять на ленту собственные вкладки, кнопки, выпадающие списки и другие элементы нового интерфейса Office
  • полностью поддерживает русский язык
  • помогает при редактировании, отображая контекстные подсказки
  • можно легко освоить по урокам
  • полностью бесплатен

Ссылка на скачивание Ribbon XML Editor

P.S.

Долгие годы Microsoft упорно в лоб игнорирует разработчиков на VBA, считая его, судя по всему, неполноценным языком программирования. Периодически проскальзывают слухи, что в следующей версии Office Visual Basic уже не будет или его заменят на JavaScript. Регулярно выходят новые версии Visual Studio с новыми плюшками, а редактор VBE так и застрял в 1997 году, до сих пор не умея стандартными средствами расставить отступы в коде.

В реальности же, тысячи людей экономят часы и дни, благодаря программистам на VBA, создающим макросы для автоматизации повседневных рутинных задач офисной обработки данных. Кто видел, как макрос в 10 строк кода делает за полминуты рассылку файлов по 200 клиентам, заменяя три часа тупой работы - тот меня поймет :)

И еще. 

Все вышеперечисленные программы - это сугубо мой личный выбор и персональная рекомендация на основе личного опыта. Никто из авторов не просил меня о рекламе и не платил за нее (а я бы и не взял, из принципа). Если у вас есть что добавить к приведенному списку - добро пожаловать в комментарии, благодарное человечество в долгу не останется.

 


04.08.2015 14:50:01
Спасибо, Николай!
Открыл для себя парочку классных плюшек :)
05.08.2015 14:57:24
Спасибо!
Буду пробовать )) Некоторые вещи архиполезные!
17.08.2015 10:45:01
Огромное спасибо. Архи полезности, однако. Ещё раз, благодарю. :)
18.08.2015 14:36:48
Я бы в этот список добавил еще пару пунктов:

1)   VBStyleCode - выполняет автоформатирование, автозавершение конструкций типа End If и End With (именно ради этой функции я использую этот плагин), и вообще ускоряет написание кода
Содержит множество разных возможностей (хотя я пользуюсь лишь малой частью)
Кое-то взято из «серьёзных» языков программирования, — если написать в коде n++, то VBStyleCode заменит эту запись на n = n + 1
Скачать можно здесь: http://www.cyberforum.ru/blogs/229110/blog207.html

2) утилита ProtectVBA - для защиты кода VBA (при попытке доступа к макросам появится сообщение Project is unviewable)
Сайт автора, вроде, уже недоступен, скачать можно у меня: http://excelvba.ru/soft/VBE
18.08.2015 15:26:11
Игорь, спасибо за ценное дополнение!
VBStyleCode у меня, правда, так и не заработал - выдает ошибку сразу при запуске Excel :(  Win10+Office13
Видимо, он больше для старых версий подходит.
21.08.2015 17:29:26
ProtectVBA поддерживает ведь только старый формат файлов офиса (до 2007) ?
08.09.2015 11:51:41
:!:  MZ-Tools 3.0 VBA не поддерживает Office 64-bit.
09.10.2015 16:54:04
Помню, был код, автоматически разрешающий макросы, Не поделитесь ссылкой
15.10.2015 22:38:39
Спасибо за отличную статью!
Николай, MZ-Tools 3.00.1218 уже не доступен по ссылке (доступна только платная 8 версия) . Есть ли возможность как-нибудь получить версию MZ-Tools 3.00.1218?
Заранее спасибо.
28.01.2016 11:50:25
Может, кто подскажет, как поставить MZ-Tools и Smart Identer на  excel в учетную запись без прав админа? На работе сисадмин поставил под своей учеткой  - работает только в его excel, при  смене учётки на  простого юзера - в excel юзера не  появляются ни панели инструментов дополнительно, ни пункты меню. Расширение прав юзера на соответствующие dll не привели к успеху.  В VBE  в Tools - Preferencies соответствующие дополнения включаем, но при закрытии excel галки слетают  и инструменты у юзера  не работают.
http://rubberduckvba.com/ Кто нибудь пробовал?
17.02.2016 11:32:10
То же не понял как запустить MZ-Tools 3.0 для пользователя без прав админа. Облазил всю справку так и не нашел ничего:(.
Для восьмой версии вроде можно, а для этой нет.
19.05.2016 10:26:15
А есть русификатор редактора VBA для 10-го офиса?
16.09.2017 10:14:40
Спасибо за прекрасный обзор!

Скажите пожалуйста,- существует ли  в природе тулс или макрос для коррекции ссылок в VBA модулях после вставки рядков/столбцов?
Т.е. например:  использовал в формулах cell(22,3) или range('C22'), а после вставки пары рядков должно будет быть cell(24,3) ... и так ко всей книге....