О том, как создавать программы на встроенном в Microsoft Office языке программирования Visual Basic for Applications (VBA), неоднократно говорилось в нашем журнале. Однако теория будет понятнее, если ее подкрепить практикой — примерами весьма интересных и полезных программ, написанных на этом языке, а таких имеется немало, но только, к сожалению, многие из них не слишком известны широкому кругу пользователей.

В этой статье сделан обзор нескольких существующих сейчас программ на языке VBA, которые работают в среде Microsoft Office. Если вы часто и помногу используете текстовый редактор Microsoft Word или другие компоненты Office, то представленные продукты могут вам существенно помочь. Отличительная особенность описанных здесь программ заключается в том, что все они распространяются с открытым кодом. То есть вы можете свободно просматривать их текст, а значит, сумеете учиться на опыте своих коллег, других программистов.

Все рассмотренные ниже программы доступны через Интернет. Правда, есть вероятность, что к моменту выхода журнала адреса каких-либо программ изменятся, однако средства поиска в Сети помогут обнаружить их без особого труда.

SuperTypist — наборщик текстов

Небольшая программа SuperTypist, разработанная Константином Ушаковым, предназначена для быстрого и удобного набора текстов. Для работы с ней сначала нужно организовать небольшой словарь, включив туда слова, которые, по вашему мнению, должны набираться автоматически (о том, как делать такой словарь и куда его поместить, говорится в инструкции к программе). Теперь при наборе какого-нибудь слова из словаря макрос автоматически подставит его окончание, когда оно будет определено однозначно. А если вы решите набрать другое слово, начинающееся теми же буквами, что и написанное в словаре, то просто продолжите ввод, и тогда уже подставленное слово исчезнет. Если же вы согласны с макросом, то нажмите клавишу <Стрелка влево>, и курсор автоматически перейдет к концу вставленного слова.

Изучение SuperTypist полезно тогда, когда нужно обеспечить работу программы с файлами, а также переназначить клавиши. Чтобы успешно выполнять свои функции, SuperTypist делает так, что при проверке наличия набираемого слова в словаре и при помещении его в документ программа срабатывает всякий раз, когда на клавиатуре нажимается какая-либо буква.

Переписать SuperTypist можно из «Библиотеки Microsoft Office Extensions», расположенной по адресу: http://www.microsoft.ru/offext.

«ВерсткаТекстаКнижкой» — книгоиздательство в Word

Почти у каждого пользователя Microsoft Word в процессе работы с ним, наверное, хотя бы один раз возникала необходимость сделать брошюру размером в половину листа, такую, чтобы после распечатки ее можно было бы сшить посередине. Подобную книжку удобно и читать, и просто носить с собой, а для учебных материалов подобный вид издания был бы наиболее оптимальным. Однако, к сожалению, стандартными средствами Word 97 и 2000 сделать такую книжку невозможно. Потому-то многие пользователи и прибегают к различным ухищрениям (например, устанавливают «зеркальные» поля в полстраницы и четыре раза пропускают каждый лист через принтер) или пытаются освоить специализированные программы верстки вроде PageMaker. В любом случае создание брошюры — непростая задача.

Рис. 1. Все умеют макросы, даже текст набирают, вот только сочинять его пока не научились

Однако книжку можно сделать в Word с помощью специальной программы. Она является макрокомандой для Microsoft Word и имеет понятное название — «ВерсткаТекстаКнижкой». Программа использует довольно оригинальный способ создания макета книжки, взяв в качестве основы для него объекты Microsoft Word, содержащие располагающийся сразу в нескольких связанных надписях текст. Таким образом получается макет книги, готовый к печати (рис. 2), который к тому же можно редактировать. Каждый второй лист макета — обратная сторона первого. Теперь, чтобы получить готовую книжку на принтере с двусторонней печатью, достаточно одного прохода. На остальных же принтерах придется сначала посылать на печать нечетные, а затем четные страницы макета, правильно переложив листы после печати первой половины. Для автоматизации этого процесса имеется специальный макрос, входящий в комплект поставки программы. Исходный документ при работе макроса не изменится.

Рис. 2. Сделать книжку в Word теперь не проблема. Вот написать бы ее только сначала…

Программа имеет множество настроек и дополнительных возможностей. Так, с ее помощью вы сумеете создать пустой макет документа с определенным числом страниц и затем вставить в него текст или сделать книгу не из последовательно расположенных листов, а из отдельных тетрадок, которые потом можно сшить между собой. Допускается таким образом задавать параметры верстки, что на каждой странице полученной книги будут располагаться две колонки текста. Программа нумерует страницы, причем шрифт и расположение номеров задает пользователь, имеет русский и английский интерфейсы, а также работает даже в нерусифицированных версиях Word 97 и 2000. Перед началом работы с программой следует прочитать достаточно подробное руководство пользователя.

Кроме того, в комплект поставки входит программа «Конвертер текста MS-DOS», предназначенная для обработки такого текста, у которого в конце каждой строки стоит символ конца абзаца, а табуляция и центрирование обозначены пробелами. Пакет содержит еще и программу «Файлообъединялка», помогающую объединить содержимое множества однотипных файлов.

Ознакомиться с текстом компонентов пакета «ВерсткаТекстаКнижкой» рекомендуется всем, кто интересуется возможностями VBA по работе с содержимым документа и пользовательскими формами. Программа имеет весьма удобный инсталлятор, и его нетрудно приспособить для собственных разработок.

Пакет макрокоманд «ВерсткаТекстаКнижкой» можно переписать с адресов: http://antorlov.chat.ru/verstka.htm или http://www.newtech.ru/~orlov/verstka.htm.

Untaco — расшифровка чисел и их обновление

Программа Untaco (рис. 3) предназначена для того, чтобы вставить в документ текстовые расшифровки чисел с возможностью их последующего автоматического обновления при изменении тех чисел, для которых были сделаны упомянутые расшифровки (в конечном тексте будут присутствовать и само число, и его расшифровка). В исходном числе допускается наличие разделителей разрядов. Результат расшифровки может выдаваться на русском и украинском языках в именительном или дательном падеже, а также на английском языке.

Рис. 3. Untaco — многофункциональный конвертер «число—текст» с возможностью автоматического обновления расшифровок чисел

Расшифровка числа может иметь вид наименования денежной единицы (поддерживается шесть их видов), простой текстовой расшифровки, а также процентов. В двух последних случаях расшифровываются и доли чисел, вплоть до тысячных.

В Untaco реализованы интересные технические решения, касающиеся работы с переменными в документе, закладками, с интеллектуальной обработкой текстовых строк и с операциями над самими макросами (их копирование и удаление). Также в Untaco показано, как заменять стандартные команды Word (например, «Сохранить», «Печать») макрокомандами. Простой и удобный инсталлятор демонстрирует, как можно помещать компоненты программ в шаблон Normal.dot.

Программа Untaco доступна с адресов: http://antorlov.chat.ru и http://www.newtech.ru/~orlov.

Выделяй и властвуй

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

Как быть, если надо установить определенный шрифт и размер во многих фрагментах, разбросанных по всему тексту? Или поместить в буфер обмена все эти фрагменты? Не повторять же эти операции каждый раз, выделяя нужный фрагмент… Можно, конечно, использовать функции «Формат по образцу» в первом случае и «Копилку» во втором, но куда как удобнее работать с программой MultiSelAction Михаила Гладченко (рис. 4).

Рис. 4. Выделяй и властвуй — вот девиз для программы MultiSelAction

В этой программе используется редко применяемая функция Microsoft Word, позволяющая выделять текст цветом, как бы проведя по нему маркером. (Если намерены работать с нею, то проверьте, включена ли во вкладке «Сервис?Параметры?Вид» секции «Показывать» опция «выделение цветом».) Выделив все необходимые фрагменты каким-либо одним цветом, запустите нужную функцию на панели макроса. MultiSelAction позволяет во всех выделенных одним и тем же цветом фрагментах изменять вид и размер шрифта, а также делать текст полужирным, курсивным или подчеркнутым. Кроме того, можно поместить в буфер обмена все выделенные фрагменты подряд, скопировав или вырезав их из текста, а потом вставить полученный набор обратно в документ.

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

Ознакомиться с творениями Михаила Гладченко рекомендуется всем, кто интересуется возможностями VBA по работе с текстом. Переписать MultiSelAction можно из «Библиотеки Microsoft Office Extensions» со страницы http://www.microsoft.ru/offext/a.asp.

Создайте свой каталог

Если вы запутались во множестве документов и файлов на жестком диске или разрабатываете Web-узел с большим числом однотипных компонентов, то эта программа, несомненно, заинтересует вас. Она также подойдет вам тогда, когда вы хотите просмотреть свои любимые графические файлы, открыв всего лишь один из них.

Пакет программ «Каталогизатор», доступный с адреса http://antorlov.chat.ru/catalog.htm или http://www.newtech.ru/~orlov/catalog.htm, состоит из собственно программы «Каталогизатор» и программы «КаталогКартинок».

Программа «Каталогизатор» вставляет в документ, открытый в Word, список из гиперссылок на все или какие-либо определенные файлы в заданной пользователем папке (рис. 5). При этом можно сортировать файлы, а также вставлять после каждой ссылки на картинку в формате Gif или Jpeg эту самую картинку.

Рис. 5. Эффективная работа — это мощный ПК плюс порядок на жестком диске. «Каталогизатор» поможет вам обеспечить последнее

Впоследствии к каждой ссылке можно добавить пояснение о назначении и содержании файла, на который она ведет, и переходить к этому файлу из созданного каталога одним нажатием кнопки мыши, не тратя время на поиски. Значит, можно сделать каталог всех файлов, находящихся в разных папках, и расположить его на Рабочем столе. В результате у вас не будет возникать проблем с их поиском.

Программа «КаталогКартинок» создает Web-страницу, содержащую ссылки на все или какие-либо определенные файлы, причем рядом с каждой ссылкой на картинку в формате Gif или Jpeg вставляется ее изображение — получается нечто вроде картинной галереи на странице (рис. 6). Пользователь может определять внешний вид будущей Web-страницы с картинками: задавать, какие имена указывать в ссылках — с включением полного пути к файлу или без него, выбирать, где располагать ссылки на файлы — снизу, сверху или сбоку от изображений.

Рис. 6. Картинная галерея

Макрокоманда не использует встроенный в Word конвертер HTML, а пишет html-текст сама, так что такие недостатки стандартного HTML-конвертера Word, как большой размер текста и лишние теги, проявляться не будут. Программа «Каталогизатор» может быть крайне полезной для обеспечения более удобной работы с файлами, а также при создании сайта, состоящего из множества страниц, — с ее помощью довольно просто сделать, например, карту сайта.

Красоты из глубин Word

Часто с ростом опыта у пользователя возникает желание как-нибудь переделать привычные программы и настроить их под свои требования. Особенно хорошо поддается такому преобразованию Microsoft Word: его гибкая система настройки панелей и меню предоставляет множество дополнительных возможностей. Однако при добавлении новых команд на Панели инструментов Word часто хочется сделать их красивыми, присвоив им разноцветные значки. Но стандартный набор значков, предоставляемый редактором Word, не слишком-то и велик… Эту проблему успешно решает программа Icon Generator («Генератор иконок»). Впрочем, ее правильнее было бы называть «Вытаскиватель иконок». Дело в том, что в исполняемых файлах и библиотеках Word содержится около 3000 значков. Эти значки по умолчанию назначены разным командам, большую часть которых обычный пользователь никогда не вызывает по причине ненадобности или отсутствия информации о них. Но это вовсе не значит, что значки команд нельзя использовать для своих целей. Программа Icon Generator извлечет из недр Word такие значки и разместит на специально созданных панелях инструментов, так что вам останется лишь скопировать их на свои панели с помощью стандартной функции «Копировать значок» (рис. 7) режима настройки панелей.

Рис. 7. И все это хранит в себе Word!

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

Программу «Генератор иконок» можно переписать с адресов: http://antorlov.chat.ru/develop.htm и http://www.newtech.ru/~orlov/develop.htm.

* * *

Конечно, в этом кратком обзоре нельзя рассказать обо всех созданных к настоящему времени макросах, однако и описанные здесь помогут вам в работе. А если вы все же решите начать самостоятельно писать программы на Visual Basic for Applications, то, исследовав макросы из этого обзора, узнаете очень много полезного. Удачи вам в работе и в программировании!

Антон Александрович Орлов, antorlov@inbox.ru, http://antorlov.chat.ru