похоже, Microsoft пытается защитить наиболее неразумных пользователей от макровирусов. По большому счету, подобные ее действия обычно приносят больше вреда, чем пользы, для авторов же программ на VBA из этого следует, что в справочных файлах к своим программам им следует упоминать о необходимости доустановки компонентов Office перед началом использования макросов. Во-вторых, для того, чтобы иметь возможность программно копировать модули и формы макросы между документами и шаблонами, необходимо, чтобы в диалоговом окне 'Сервис — Макросы — Безопасность', на вкладке 'Надежные источники' имелась отметка в пункте “Доверять доступ к Visual Basic Project”. Об этом тоже следует упомянуть в справке к программе.
В OfficeXP скопировать файл из одной папки в другую или удалить его посредством программного кода можно только при отключенной Службе индексирования (cсылка “Параметры поиска” на панели “Обычный поиск', рис. 5.5). К сожалению, по умолчанию эта Служба включена, а программно ее отключить невозможно. Поэтому, несмотря на декларируемую полную 'совместимость сверху вниз' версий Office, автору программ на VBA настоятельно рекомендуется тестировать свои программы во всех версиях Office и отлаживать их при необходимости.
Рис. 5.5.
Глава 6. Волшебный мир макросов
О том, как создавать программы на встроенном в Microsoft Office языке программирования Visual Basic for Applications (VBA), было подробно рассказано в предыдущих главах. Но теория будет еще полезнее, если подкрепить ее практикой — примерами реально работающих программ, написанных на этом языке. А таких — немало. К сожалению, многие из них не такие уж и известные, но весьма интересные и полезные для очень многих пользователей.
В этой главе вы найдете небольшой обзор существующих на настоящее время программ на языке VBA, работающих в среде Microsoft Office. Обратите внимание на них — если вы часто и много используете текстовый редактор Microsoft Word или другие компоненты Office, то они могут серьезно помочь вам в работе. Отличительная особенность большинства программ, описанных здесь — то, что они распространяются с открытым кодом. То есть — вы можете свободно просматривать текст программ, исследовать его, учиться на опыте ваших коллег, изучая код их программ и стремясь понять предназначение каждой строчки и каждой команды.
Не думайте, что изучение кода уже созданных программ как-то неправильно или незаконно. Вы тем самым служите распространению знаний на Земле (хотя бы и просвещаясь самостоятельно), а это — весьма благородная цель. К тому же и вашим коллегам это принесет пользу — их труд по написанию красивого и быстрого кода, помимо создания хорошей программы, еще и даст вам возможность стать умелым программистом.
Все описанные здесь программы доступны через Всемирную Сеть. К сожалению, вполне возможно, что к моменту выхода книги некоторые адреса поменяются, но с помощью средств поиска в Сети найти их снова будет вполне возможно.
«Untaco» — расшифровка чисел и их обновление
Довольно часто в бухгалтерской и финансовой документации вместе с цифровой записью числа требуется указывать и его текстовую расшифровку — например, писать «сто» после числа 100. Довольно ясно, что делать это вручную утомительно, да и небезопасно — можно легко ошибиться. И не случайно данный процесс весьма большое количество пользователей решило поручить макросам — программам на VBA. Дополнений для Word, помещающие в документ текстовые расшифровки чисел, создано немало.
Однако программа Untaco (рис. 6.1) серьезно отличается от своих аналогов одной особенностью. Дело в том, что Untaco умеет автоматически обновлять те расшифровки, которые вставлены с ее помощью. Если после вставления расшифровки числа вы измените его значение, то расшифровка тоже соответственно изменится при сохранении, печати документа или вызове специальной команды, и вам не придется вставлять ее повторно. При работе с деловыми документами, бухгалтерской отчетностью такая автоматическая синхронизация расшифровки числа с его значением весьма важна, так как любое несогласование здесь может вызвать серьезные последствия.
Рис. 6.1.
Кроме того, параметры вставляемых с помощью Untaco расшифровок можно весьма широко настраивать. Так, расшифровка может производиться на русском или украинском языках в именительном или дательном падеже, а также на английском языке, иметь вид наименования денежной единицы (поддерживается шесть их видов), простой текстовой расшифровки, а также количества процентов. В двух последних случаях расшифровываются и доли чисел вплоть до тысячных. Нетрудно научить программу помещать часть расшифровки или всю ее в скобки, делать ее первую букву заглавной. Компоненты программы могут копироваться в редактируемый документ, что позволит обеспечивать обновление расшифровок даже на компьютере, где Untaco не установлена.
В Untaco реализованы интересные технические решения, связанные с работой с переменными в документе, закладками, интеллектуальной обработкой текстовых строк, а также с операциями над самими макросами (их копирование и удаление). Также в Untaco показано, как осуществить подмену стандартных команд Word (например, «Сохранить», 'Печать') макрокомандами. Простой и удобный инсталлятор демонстрирует возможность помещения компонентов программ в шаблон Normal.dot.
Программа Untaco доступна с адресов: http://antorlov.chat.ru или http://www.newtech.ru/~orlov.
TreeView — кнопка «Пуск» для Microsoft Word
Данная разработка способна серьезно облегчить труд тех, чей рабочий инструмент — Microsoft Office. Коротко можно сказать, что она — окно 'Открыть файл', сделанное по образцу папки Internet Explorer'a «Избранное» (или меню Windows 'Пуск'), — в виде выпадающего меню отображаются все документы в текущей папке и в любых других, указанных пользователем, что позволяет искать и открывать документы, не выходя из Word и не роясь в изрядно поднадоевшем окне Word «Открыть» (рис. 6.2).
Рис. 6.2.
Программа имеет множество полезных настроек. К примеру, можно создать любое необходимое Вам количество панелей, на которых разместить любые наборы указывающих на папки кнопок. Если у Вас на жестком диске есть двенадцать каталогов, где Вы храните свои документы, то можно создать панель с кнопками, соответствующими все этим двенадцати каталогам, и получать доступ к их содержимому одним нажатием мыши. Кроме того, с помощью программы «TreeView» очень легким становится процесс сохранения документов в различных папках. Достаточно лишь перейти с ее помощью по дереву каталогов TreeView в нужную папку и из меню программы выбрать команду сохранения.
В программе реализованы такие функции, как обращение к командам API для поиска файлов,