Часть вторая: Добро пожаловать в МАКРОмир!
Итак, мы продолжаем начатый в прошлом номере "Компьютерных вестей" разговор про макросы. Для тех, кто пропустил первую часть, скажу только, что в ней я рассказал о том, как самостоятельно записать макрос в Microsoft Word (в Excel'е и PowerPoint'е этот процесс абсолютно аналогичен), а также чем макросы опасны. Сегодня мы рассмотрим более продвинутые приёмы работы с макросами в Microsoft Office: управление коллекцией макросов, скопившихся на вашем компьютере, и основы макроязыка, с помощью которого создаются и хранятся макросы в "Офисе".
Если вы регулярно пользуетесь макросами, то знаете, что они имеют способность скапливаться в шаблонах и документах Microsoft Office. Это может существенно сказаться на производительности программ (т. е. фактически на скорости их работы) и на размерах создаваемых документов. В целях уменьшения числа подобных проблем часть макросов можно удалить или распределить по специально созданным для этого шаблонам, которые не будут загружаться каждый раз при загрузке Word'а, Excel'а или PowerPoint'а. Сделать это можно с помощью специального органайзера, доступного через меню "Сервис" -> "Макрос" -> "Макросы". В появившемся диалоговом окне нажмите кнопку "Организатор". На вкладке "Макросы" как раз и осуществляется управление макросами: их можно перенести из одного шаблона в другой, удалить, переместить из документа в шаблон и т.п. Кстати, советую обратить внимание и на остальные вкладки в этом окне: они позволят провести аналогичные действия над панелями, стилями и шаблонами автотекста.
Что ж, а теперь - о VBA. VBA - аббревиатура названия языка Visual Basic for Applications (Visual Basic для приложений). Именно этот язык программирования используется для создания и хранения макросов в Microsoft Office. Да-да, это самый настоящий язык программирования, и не нужно этого пугаться. Потому что VBA - один из самых простых языков, придуманных людьми, и именно поэтому корпорация Microsoft встроила в свой продукт этот язык, а не какой-нибудь другой.
Выберите в меню "Сервис" пункт "Макрос", а в нём - "Редактор Visual Basic". При открытии окна редактора в нём автоматически появляются все шаблоны, содержащие макросы. С левой стороны находятся проводник по проекту (сверху) и редактор свойств объектов (ниже).
Давайте посмотрим, что же находится в том окне, где что-то написано разноцветными буквами. Это и есть тексты макросов (принято использовать термин "исходный код"). Синим цветом выделены зарезервированные слова - т.е. те, которые помогают "Офису" видеть, что это и есть макрос. Каждый макрос начинается словом "Sub", за которым следует название макроса и две скобки, а заканчивается "End Sub". Зелёным цветом выделены комментарии, т. е. тот текст, который игнорируется интерпретатором макросов. Комментарий - всё, что находится за символом апострофа до конца строки. Обычно макросы, записанные пользователем, содержат три комментария: название, поясняющий текст, введённый пользователем, и дату создания. Всё, что в редакторе кода макросов выделяется чёрным цветом - операторы языка, которые и выполняют некоторые действия. Например, нижеследующий макрос закрывает панель интрументов "Макросы".
Sub NoVBA() ' ' NoVBA Макрос ' Закрывает панель интрументов "Макросы" ' Макрос записан 06.03.06 SF ' CommandBars("Visual Basic").Visible = False End Sub
Команда в предпоследней строке приведенного примера содержит функцию CommandBar, которой в качестве аргумента (то, что в скобках) передаётся название панели инструментов (оно в кавычках). В программировании принято говорить, что значение, возвращаемой функцией - объект типа "Панель инструментов". Через точку записано одно из свойств этой панели инструментов (её присутствие на экране). Командой " = false" мы задаём ему значение "ложь", т.е., по-русски, Панель ("Visual Basic").Видима = ложь. Что же тогда истина? То, что панель невидима, т. е. с помощью этого оператора мы убираем панель с экрана.
Что ж, на сегодня, пожалуй, хватит. Любопытных читателей больше к справке отсылать не буду, т.к. обнаружил, что в русифицированных версиях "Офиса" раздел, посвящённый VBA, по каким-то причинам напрочь отсутствует или же не переведен. Поэтому ждите продолжения в "КВ"!
Вадим СТАНКЕВИЧ
Снова о пользе макросов
Рискую повториться, но уж больно хорош пример! На днях одному моему знакомому надо было исправить таблицы Microsoft Excel: удалить из них все пустые ячейки. Сказать, что он был в панике, значит, не сказать ничего: на обработку трёх таблиц, каждая из которых имела примерно по двадцать столбцов и десять тысяч строк, ему был отведён всего один вечер. Едва придя домой, он сразу сел за работу. К девяти часам вечера были обработаны четыре тысячи строк из первой таблицы. Отчаяние было так велико, что он решил позвонить мне и попросить совета. И один-единственный макрос, который я сделал буквально за несколько минут и переслал на его электронный почтовый ящик, спас хорошего человека от бессонной ночи и нагоняя от начальства за не выполненную работу. Так что не забывайте о макросах!
![Версия для печати Версия для печати](https://www.kv.by/sites/all/modules/print/icons/print_icon.png)
Горячие темы