[Параметры] [Интерфейс] [Работа с письмами] [Ошибки]
(01) (02) (03) (04) (05) (06) (07) (08) (09) (10) (11) (12) (13) (14) (15) (16) (17) (18) (19) (20) (21) (22) (23) (24) (25) (26) (27) (28) (29) (30) (31) (32) (33) (34) (35) (36) (37) (38) (39) (40) (41) (42) (43) (44) (45) (46) (47) (48) (49) (50) (51) (52) (53) (54) (55) (56) (57) (58) (59) (60) (61) (62) (63) (64) (65) (66) (67) (68) (69) (70) (71) (72) (73) (74) (75) (76) (77) (78) (79) (80) (81) (82) (83) (84) (85) (86) (87) (88) (89) (90) (91)

Подробности для любознательных Бейсик - этапы большого пути

В журнале уже рассказывалось о возможностях прикладных программ, входящихв семейство Microsoft Office 2000 (см. "самый интересный журнал Наука и жизнь " № 6, 2000 г.). Казалосьбы, этот пакет содержит все, что необходимо для самого взыскательного пользователя,- выбирай нужное приложение и работай. Однако это не совсем так. Несмотряна то, что число офисных программ растет год от года (пять лет назад всоставе MS Office было четыре приложения, сегодня - девять), а их функциональностьрасширяется, конкретному пользователю постоянно чего-то не хватает. Либопрограмме недостает каких-то важных операций, либо они выполняются не самымоптимальным образом. Между тем офисные приложения вполне можно сравнитьс айсбергом: пользователь видит лишь небольшую "надводную" часть функций,заложенных в программе, часто даже не подозревая об огромных "подводных"возможностях, с использованием которых работа за компьютером может статьгораздо более комфортной и эффективной.
Хорошего работника узнают по инструменту.
Пословица. Разумно взять инструмент и испытать его. При неудаче честно признайтесьв этом и попробуйте другой инструмент. Но главное - делайте что-нибудь.
Франклин Д. Рузвельт. Существует как минимум три способа оптимизировать работу офисного приложения: Настройка интерфейса программы и создание простейших макрокоманд. Подключение к приложению готовых "расширений", разработанныхкем-то другим. Создание собственных расширений, начиная от макрокоманд изаканчивая сколь угодно сложными приложениями.Первые два способа доступны любому человеку, имеющему минимальный опытработы на компьютере. Третий потребует от пользователя определенных навыковпрограммирования, а также знания английского языка (хотя бы в пределахнеполной средней школы). Далее мы продемонстрируем, как можно сделать работуза компьютером более эффективной, на примере текстового процессора Word2000 - самого распространенного приложения семейства MS Office 2000 (практическивсе сказанное будет годиться и для версии Office 97).
Настройка интерфейса Word Для работы с текстовым документом в Word можно использовать свыше тысячи(!) различных встроенных операций. Обращение к ним выполняется с помощьюкоманд меню или кнопок на панелях инструментов, расположенных обычно вверхней части экрана. Линейка меню включает самые необходимые и часто используемыефункции. Остальные команды разбросаны по 23-м встроенным панелям инструментовпрограммы (в 1994 году Word 6.0 включал всего восемь панелей).Панели инструментов можно по желанию добавлять или убирать с экранаи помещать в любую его часть (линейку меню в отличие от всех других панелейудалить нельзя). В принципе можно вывести на экран все панели инструментов,но тогда не останется места для самого документа. Между тем для работыпользователю обычно необходимо иметь "под рукой" всего лишь несколько десятковкоманд, поэтому желательно, чтобы именно они были представлены на экране.Для этого применяются различные варианты настройки. Вывод на экран нужногонабора панелей проще всего выполняется с помощью команды ВидПанелиИнструментов . Кроме того, для каждой панели можно указать набор кнопок,которые должны быть представлены в данный момент. (В Word 2000 на каждойпанели имеется опция "Добавить или удалить кнопки".)Более детальная настройка проводится с помощью специального диалоговогоокна (команда СервисНа стройка). Этот режим позволяет размещатьна панелях инструментов любые команды (не только встроенные в панель изначально)и в любом месте, а также создавать собственные "пользовательские" панелис произвольным набором кнопок. Все эти операции выполняются простым "перетаскиванием"мышью изображений кнопок на панели. Таким образом вы можете сформироватьсвой индивидуальный набор панелей инструментов, рассортировав на них командыв удобном для вас порядке. Создание макрокоманд методом записи Итак, мы расположили все нужные для работы команды оптимальным образом.Следующий шаг - автоматизация выполнения часто используемых последовательностейопераций. Об этом уже писалось в журнале №5 за 1998 год. Чтобы разобраться,о чем идет речь, рассмотрим следующий пример.В редакции некоего журнала принят определенный стандарт для распечаткитекстов статей, присылаемых авторами по электронной почте. Например, этодолжен быть такой формат: тип шрифта - Courier, размер шрифта - 12, расстояниемежду строк - два интервала, форматирование абзаца - с красной строки,отступ - 1 сантиметр. При этом подразумевается, что авторы присылают своитексты в формате Word, но каждый из них использует свой собственный наборпараметров форматирования. Поэтому при первичной обработке такого файлаоператор (технический секретарь редакции) преобразовывает его в стандартныйформат и распечатывает документ. Действия выполняются им по следующей схеме: Открыть файл с документом (команда
ФайлОткрыть ). Выделить весь текст (команда ПравкаВыделить все). Установить тип и размер шрифта (команда ФорматШрифт, далее установка в диалоговом окне нужных параметров). Установить параметры форматирования абзаца (команда ФорматАбзац, далее установка в диалоговом окне нужных параметров). Сбросить выделение текста (например, нажать клавишу Homeдля установки курсора в начало текста). Сохранить документ под тем же именем (команда ФайлСохранить). Распечатать документ (команда ФайлПечать , далее нажатьOK). Закрыть документ (команда ФайлЗакрыть ).Точно такую же последовательность операций придется повторять при обработкекаждой новой статьи. Нельзя ли автоматизировать эту рутинную работу? Оказывается,можно - для этого надо создать соответствующую макрокоманду, или "сложную"команду, состоящую из последовательности "простых" команд. (При использованиитермина "макрокоманда" также подразумевается, что в отличие от команды- некоторой встроенной функции приложения - макрокоманда создается самимпользователем.)Чтобы написать макрокоманду, надо выполнить следующие операции: а. Открыть документ с текстом присланной статьи. 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 ` выделить весь текст
Selection.Font.Name = "Arial" ` тип шрифта
Selection.Font.Size = 12 ` размер шрифта
With Selection.ParagraphFormat ` установить
` параметры форматирования абзаца...OutlineLevel = wdOutlineLevelBodyTextEnd With
Selection.HomeKey Unit:=wdStory ` сбросить `выделение, курсор вначало
ActiveDocument.Save ` сохранить документ
` распечатать документ (тут задается много `параметров) диалоговогоокна Печать
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 ` Закрыть документ
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/.
Эти ресурсы пригодятся как начинающим программистам, так и опытнымразработчикам. Кандидат технических наук А. Колесов.



(01) (02) (03) (04) (05) (06) (07) (08) (09) (10) (11) (12) (13) (14) (15) (16) (17) (18) (19) (20) (21) (22) (23) (24) (25) (26) (27) (28) (29) (30) (31) (32) (33) (34) (35) (36) (37) (38) (39) (40) (41) (42) (43) (44) (45) (46) (47) (48) (49) (50) (51) (52) (53) (54) (55) (56) (57) (58) (59) (60) (61) (62) (63) (64) (65) (66) (67) (68) (69) (70) (71) (72) (73) (74) (75) (76) (77) (78) (79) (80) (81) (82) (83) (84) (85) (86) (87) (88) (89) (90) (91)