КАК ПОВЫСИТЬ КОМФОРТ ВАШЕГО "ОФИСА"(От настройки офисных приложений - к офисному программированию)
Кандидат технических наук А. Колесов
Хорошего работника узнают по инструменту. Пословица.
Разумно взять инструмент и испытать его. При неудаче честно признайтесь
в этом и попробуйте другой инструмент. Но главное - делайте что-нибудь.
Франклин Д. Рузвельт.
Существует как минимум три способа оптимизировать работу офисного приложения:
1. Настройка интерфейса программы и создание простейших макрокоманд.
2. Подключение к приложению готовых "расширений", разработанных кем-то другим.
3. Создание собственных расширений, начиная от макрокоманд и заканчивая сколь угодно сложными приложениями.
Первые два способа доступны любому человеку, имеющему минимальный опыт
работы на компьютере. Третий потребует от пользователя определенных навыков
программирования, а также знания английского языка (хотя бы в пределах
неполной средней школы). Далее мы продемонстрируем, как можно сделать работу
за компьютером более эффективной, на примере текстового процессора Word
2000 - самого распространенного приложения семейства MS Office 2000 (практически
все сказанное будет годиться и для версии Office 97).
НАСТРОЙКА ИНТЕРФЕЙСА WORD
Для работы с текстовым документом в Word можно использовать свыше тысячи
(!) различных встроенных операций. Обращение к ним выполняется с помощью
команд меню или кнопок на панелях инструментов, расположенных обычно в
верхней части экрана. Линейка меню включает самые необходимые и часто используемые
функции. Остальные команды разбросаны по 23-м встроенным панелям инструментов
программы (в 1994 году Word 6.0 включал всего восемь панелей).
Панели инструментов можно по желанию добавлять или убирать с экрана и помещать в любую его часть (линейку меню в отличие от всех других панелей удалить нельзя). В принципе можно вывести на экран все панели инструментов, но тогда не останется места для самого документа. Между тем для работы пользователю обычно необходимо иметь "под рукой" всего лишь несколько десятков команд, поэтому желательно, чтобы именно они были представлены на экране. Для этого применяются различные варианты настройки. Вывод на экран нужного набора панелей проще всего выполняется с помощью команды Вид|Панели Инструментов . Кроме того, для каждой панели можно указать набор кнопок, которые должны быть представлены в данный момент. (В Word 2000 на каждой панели имеется опция "Добавить или удалить кнопки".)
Более детальная настройка проводится с помощью специального диалогового
окна (команда Сервис|На стройка). Этот режим позволяет размещать
на панелях инструментов любые команды (не только встроенные в панель изначально)
и в любом месте, а также создавать собственные "пользовательские" панели
с произвольным набором кнопок. Все эти операции выполняются простым "перетаскиванием"
мышью изображений кнопок на панели. Таким образом вы можете сформировать
свой индивидуальный набор панелей инструментов, рассортировав на них команды
в удобном для вас порядке.
СОЗДАНИЕ МАКРОКОМАНД МЕТОДОМ ЗАПИСИ
Итак, мы расположили все нужные для работы команды оптимальным образом.
Следующий шаг - автоматизация выполнения часто используемых последовательностей
операций. Об этом уже писалось в журнале №5 за 1998 год. Чтобы разобраться,
о чем идет речь, рассмотрим следующий пример.
В редакции некоего журнала принят определенный стандарт для распечатки текстов статей, присылаемых авторами по электронной почте. Например, это должен быть такой формат: тип шрифта - Courier, размер шрифта - 12, расстояние между строк - два интервала, форматирование абзаца - с красной строки, отступ - 1 сантиметр. При этом подразумевается, что авторы присылают свои тексты в формате Word, но каждый из них использует свой собственный набор параметров форматирования. Поэтому при первичной обработке такого файла оператор (технический секретарь редакции) преобразовывает его в стандартный формат и распечатывает документ. Действия выполняются им по следующей схеме:
1. Открыть файл с документом (команда
Файл|Открыть ).
2. Выделить весь текст (команда Правка|Выделить все).
3. Установить тип и размер шрифта (команда Формат|Шрифт , далее установка в диалоговом окне нужных параметров).
4. Установить параметры форматирования абзаца (команда Формат|Абзац , далее установка в диалоговом окне нужных параметров).
5. Сбросить выделение текста (например, нажать клавишу Home для установки курсора в начало текста).
6. Сохранить документ под тем же именем (команда Файл|Сохранить ).
7. Распечатать документ (команда Файл|Печать , далее нажать OK).
8. Закрыть документ (команда Файл|Закрыть ).
Точно такую же последовательность операций придется повторять при обработке каждой новой статьи. Нельзя ли автоматизировать эту рутинную работу? Оказывается, можно - для этого надо создать соответствующую макрокоманду, или "сложную" команду, состоящую из последовательности "простых" команд. (При использовании термина "макрокоманда" также подразумевается, что в отличие от команды - некоторой встроенной функции приложения - макрокоманда создается самим пользователем.)
Чтобы написать макрокоманду, надо выполнить следующие операции:
а. Открыть документ с текстом присланной статьи.
b. Установить режим "Запись макрокоманды", выбрав команду Сервис|Макрос|Начать запись. Сначала появится диалоговое окно, в котором нужно задать имя вашей макрокоманды, например НашеФорматирова ниеДокумента . Здесь же можно присвоить макрокоманде свою кнопку на одной из панелей инструментов, а также комбинацию "горячих клавиш" для быстрого запуска операции (это можно будет сделать и позже, когда вам будет удобно). После установки режима записи на экране появится небольшая панель Остановить запись с кнопками управления процессом создания макрокоманды.
с. Выполнить с документом всю последовательность операций, указанную выше (пункты 2-8).
d. Отключить режим записи макрокоманды, нажав кнопку Остановить запись на одноименной панели.
Теперь к тысяче встроенных команд Word прибавилась еще одна, которая выполняет специфическую, но очень полезную для вас операцию. Обработку всех аналогичных файлов теперь можно выполнить нажатием одной кнопки на панели инструментов. То, на что раньше требовалось 20-30 секунд (и внимания человека!), теперь займет не более 2-3 секунд.
Если вы часто работаете с тестовыми документами, то наверняка обнаружите
множество таких часто повторяющихся последовательностей операций. Макрокоманды
сделают вашу работу более эффективной.
КАК УСТРОЕНА МАКРОКОМАНДА
Однако, создавая макрокоманды, вы довольно быстро столкнетесь с ситуацией,
когда метод записи не решит нужную задачу. Например, вам периодически приходится
"чистить" диск, удаляя с него ненужные документы. Для этого вы открываете
в Word каждый документ с тем, чтобы выяснить, оставить его на диске или
удалить. В последнем случае вы закрываете документ, а потом с помощью Проводника
Windows удаляете соответствующий файл. Все это неудобно и отнимает массу
времени - гораздо лучше создать специальную макрокоманду, выполняющую сразу
и закрытие, и удаление документа. Но сделать это с помощью только записи
действий не удастся, так как удаление файла производится вне приложения
Word с помощью другой утилиты Windows.
Чтобы подойти к решению такой задачи, посмотрим, как же устроена созданная выше макрокоманда НашеФорматированиеДокумента . Для этого выберите команду Сервис|Макрос| Макросы, в появившемся диалоговом окне выделите имя макрокоманды и нажмите кнопку Отладка. Через пару секунд вам откроется новое окно со средой программирования, которая называется VBA - Visual Basic for Applications (Visual Basic для приложений). Это и есть та огромная подводная часть айсберга MS Office, о которой мы упоминали во вступлении. Обратите внимание, что среда VBA представлена в англоязычном варианте: ее создатель - корпорация Microsoft - считает нецелесообразным делать версии средств разработки на национальных языках (с таким подходом можно вполне согласиться). Освоение VBA откроет для вас новые возможности офисных приложений и поможет повысить эффективность вашей работы. Мы же сейчас сделаем только маленький шажок для понимания этих возможностей.
Итак, мы вошли в среду VBA. В одном из окон представлен программный код, который, как нетрудно догадаться, выполняет созданную нами макрокоманду:
Sub НашеФорматированиеДокумента()
`
` НашеФорматированиеДокумента Macro
` Macro recorded 17.08.00 by Kolesov Andrei
`
Selection.WholeStory `2. выделить весь текст
Selection.Font.Name = "Arial" `3. тип шрифта
Selection.Font.Size = 12 `3. размер шрифта
With Selection.ParagraphFormat `4. установить
` параметры форматирования абзаца
...
OutlineLevel = wdOutlineLevelBodyText
End With
Selection.HomeKey Unit:=wdStory ` 5. сбросить `выделение, курсор в
начало
ActiveDocument.Save ` 6. сохранить документ
` 7. распечатать документ (тут задается много `параметров) диалогового
окна Печать
Application.PrintOut FileName:="", _ Range:=wdPrintAllDocument, _
Item:= wdPrintDocumentContent, Copies:=1,_ Pages:="", _
PageType:=wdPrintAllPages, Collate:=True,_ Background:=True, _
PrintToFile:=False, PrintZoomColumn:=0, _
PrintZoomRow:=0, PrintZoomPaperWidth:=0,_ PrintZoomPaperHeight:=0
ActiveDocument.Close ` 8. Закрыть документ
End Sub
Заметим, что в приведенном коде не показано около полутора десятков
строк внутри конструкции With... End With - там производится тривиальная
установка параметров диалогового окна Форматирование абзаца. Даже
если вы не имели раньше дел с программированием, легко догадаться, что
каждая строка этой небольшой программы соответствует одной операции, выполненной
при записи макрокоманды. Минимальное знание английского языка позволит
понять смысл команд, но мы на всякий случай написали русские комментарии.
Чтобы подробнее узнать о назначении каждой команды и различных вариантах
ее применени я, установите курсор на интересующем вас слове и нажмите F1
- появится справка на английском языке.
ПИШЕМ МАКРОКОМАНДУ "РУКАМИ" - НАЧИНАЕМ ПРОГРАММИРОВАТЬ
Теперь попробуем написать макрокоманду удаления ненужного документа. Для
этого вернемся опять в среду Word (переход из Word в VBA и наоборот выполняется
нажатием комбинации клавиш Ctrl+F11). Далее откроем какой-нибудь документ
и с помощью рассмотренного выше метода записи создадим макрокоманду
Закрыть|
Удалить, состоящую только из одной операции - закрыть файл (команда
меню
Файл|Закрыть ). Теперь перейдем в среду VBA и посмотрим код
сформированной макрокоманды. Если вы внимательно изучили структуру предыдущей
макрокоманды, то для вас не будет открытием то, что код новой выглядит
следующим образом:
Sub ЗакрытьУдалить()
ActiveDocument.Close
End Sub
Пока эта макрокоманда умеет только закрывать файл. Чтобы выполнить удаление файла, нужно проделать следующие операции:
- узнать полное имя файла, который соответствует активному документу;
- запросить у пользователя подтверждение на операцию удаления (конечно, такой запрос можно и не делать, но хороший "тон" требует выполнить это);
- если пользователь подтвердил операцию, то закрыть и удалить файл.
Этому соответствует следующий программный код:
Sub ЗакрытьУдалить()
FileName$ = ActiveDocument.FullName ` полное ` имя файла активного
документа
` запрос на подтверждение удаления
Result = MsgBox("Удалить файл " & FileName$_ & " ?", vbYesNo,
"Закрыть и удалить")
If Result = vbYes Then ` получен ответ "Да"
ActiveDocument.Close ` закрыть документ
Kill FileName$ ` удалить файл
End If
End Sub
Итак, мы получили макрокоманду закрытия и удаления файла. Очевидно, что ее можно было целиком написать в среде VBA, не прибегая к методу записи для написания макрокоманды закрытия файла. В этом случае надо начать с выполнения следующей последовательности команд - Сервис|Макрос|Макросы| Создать.
Хотелось бы обратить внимание читателей на особенность современных средств программирования - они, как правило, интуитивно понятны. Действительно, текст программы очень похож на обычные разговорные логические обороты (только на английском языке). При этом смысл процедур и переменных отражается непосредственно в их именах. (Раньше, когда были ограничения длины имен в 3 или 6 символов, приходилось иметь дело с терминами, которые с трудом поддавались простой интерпретации. Догадайтесь, например, что скрывается за именами типа M10 или CVX.) Для имен переменных можно использовать русские символы, но ключевые слова языка обозначаются только английским алфавитом.
Механизмы внутреннего программирования приложений широко используют и российские разработчики. Самый наглядный пример - технологическая платформа для решения разнообразных учетно-экономических задач "1С:Предприятие", выпускаемая фирмой "1С". В этой системе в качестве синтаксических единиц языка программирования можно использовать как русские, так и английские слова.
На этом следует завершить раздел "начинаем программировать", поскольку
дальше открывается безбрежное море возможностей модификации офисных приложений.
Для их освоения нужно читать специализированные статьи, книги, документацию
и прочее. Но согласитесь - сделать простую, но полезную макрокоманду оказалось
совсем не так сложно!
ПОДКЛЮЧЕНИЕ ГОТОВЫХ РАСШИРЕНИЙ
Прежде чем писать свои макрокоманды, полезно уточнить - а нет ли уже готовых
расширений, которые могли бы решить ваши проблемы? Например, созданные
нами ранее макрокоманды мог бы использовать другой пользователь (макрокоманды
автоматически сохраняются в файле шаблона Обычный.dot).
В настоящее время существует огромное число программных дополнений для офисных приложений. Некоторые из них распространяются на коммерческой основе, но значительная часть - бесплатно. Нужно только знать, где их найти и как подключить. В качестве наиболее полного и самого известного русскоязыч ного Web-ресурса, содержащего такие программы, можно уверенно посоветовать сервер http://www.microsoft.ru/offext/.
В течение последних трех лет российское отделение Microsoft проводит конкурс Office Extensions (офисные расширения) на лучшие разработки разнообразных дополнений для приложений MS Office. За эти годы лауреатами конкурса, получившими ценные призы, стали несколько десятков человек - не только из России, но также из стран ближнего и дальнего зарубежья. Библиотека общедоступных программ в настоящее время насчитывает около 300 самых разнообразных разработок, причем ее услугами ежедневно пользуются несколько сотен человек. Заглянув на сервер Microsoft Office Extensions, вы наверняка найдете там что-то интересное и полезное для себя.
В прошлом году на сервере появился еще один раздел, предназначенный
для поддержки VBA-программи стов. Поэтому, если вы хотите не только пользоваться
чужими разработками, но и создавать свои собственные, внимательно познакомьтесь
с материалами, размещенными по адресу: http://www.microsoft.ru/offext/officedev/.
Эти ресурсы пригодятся как начинающим программистам, так и опытным
разработчикам.
Читайте в любое время