Ms word это среда разработки

Время на прочтение
7 мин

Количество просмотров 8.1K

Картинка pch.vector, freepik

Практически каждый из читателей, наверняка не раз (а кто-то и на постоянной основе), имеет потребность в написании и редактировании документов в среде Word.

Однако если подобная деятельность производится с некоторой периодичностью, пытливый ум сразу начинает думать о способах оптимизации своего труда. Одним из таких способов является программирование в среде Visual Basic for Applications,- среде разработки, которая встроена в известные офисные продукты: Word, Excel, PowerPoint и т.д. Статья больше вводная, для тех, «кто совсем не в теме» :-).

Следует сразу оговориться, что любое программирование требует для изучения достаточных временных ресурсов и, в ряде случаев, подобные трудозатраты могут быть неоправданными.

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

Макрос
Тут следует сказать, что по умолчанию, меню для записи макроса скрыто и его необходимо явным образом включить. Для этого нужно пройти по пути: Файл-Параметры

В открывшемся окне перейти в настройку ленты:

Далее, в правом окне, под названием «Основные вкладки», поставить галочку рядом с опцией «разработчик»:

В результате этих действий на ленте сверху у вас появится вкладка «разработчик»:

Войдя в которую, в левой части, вы как раз и сможете найти две интересующие нас опции: «Visual Basic» и «Макросы»:

Соответственно, далее если мы нажимаем на кнопку «Запись макроса», то мы сможем записать нашу последовательность действий:

Созданный макрос можно сохранить либо в конкретном документе, либо сделать его доступным для всех документов (если сохраним его в шаблоне normal.dotm):

После чего, записанный макрос может быть воспроизведён, если мы перейдём, нажав на кнопку «Макросы»:

Для многих достаточно тривиальных задач, этого бывает достаточно. Однако бывают ситуации, когда нам необходимо применить программирование.

Здесь существуют 2 опции:

  • правка кода уже имеющегося макроса
  • написание кода с нуля.

Для первого случая, нам нужно перейти нажав на «макросы», для того чтобы открылась окно выбора макроса и нажать на кнопку «отладка»:

Это приведёт к запуску среды разработки, где вы сможете увидеть свой записанный макрос в виде кода. Кстати говоря, это является одним из интересных лайфхаков, когда недостаточное знание программирования на VBA вы подменяете сгенерированным кодом макроса и реверс-инжинирингом, с попыткой вникнуть, «а как оно там внутри устроено?»:

Чуть выше, мы произвели ряд манипуляций, для того чтобы вынести вкладку «разработчик» на ленту. Однако если вы хотите не писать макросы, а писать код сразу, совершенно необязательно добавлять эту вкладку на ленту.

Среду разработки можно вызвать нажатием сочетания клавиш Alt+F11, после чего, написав нужный код, запустить его прямо из среды разработки.

Список готовых макросов можно вызвать нажатием сочетания клавиш ALT+F8.

Visual Basic for Applications(VBA)
Как мы уже говорили, разработка кода для приложений Office ведётся с использованием специального кода, который является версией интерпретируемого языка Visual Basic (несколько упрощённой его версией).

Благодаря использованию объектной модели компонентов (COM), могут применяться компоненты, используемые в ряде программ одновременно, для этого используется технология OLE (Object Linking and Embedding), суть которой заключается передаче части работы от одной программы к другой (в рамках среды Windows), и получение обратно результата.

Это означает, что теоретически, вы можете на VBA написать программу, которая будет использовать, например, средства Photoshop или Corel Draw, если конечно они установлены у вас на компьютере (однако, есть подозрение, что для этого потребуется более расширенная версия языка, чем тот, который идёт в комплекте с пакетом Office).

В рамках VBA объекты представлены в виде иерархии: Application/Document/Paragraph и т.д., то есть, как можно видеть в этой строке, каждый предыдущий — содержит последующий.

Получается своего рода «матрёшка», где одно вложено в другое и, если задуматься, это достаточно логично.

Например, главным объектом является Application. Создание этого объекта, другими словами, означает просто запуск Word. Но программа сама по себе никому не интересна, необходимо, чтобы внутри этой программы был создан или открыт некий документ (объект Document). В свою очередь, этот объект содержит целый ряд других элементов иерархии, которые служат для задания его параметров и оформления.

Согласно этому источнику, несмотря на то, что Word содержит множество объектов, по большому счёту, для успешной работы достаточно понимания всего лишь 5 объектов:

  • Application
  • Document
  • Selection
  • Range
  • Bookmark

Логика здесь следующая:

  • мы запустили Word (Application),
  • создали или открыли в нём документ(Document),
  • дальнейшие манипуляции в этом документе происходят либо с постановкой курсора в определенное место, либо с выделением определённого места в документе(Range).

Последний же объект (Bookmark) имеет смысл изучить для создания удобной навигации по документам, так как он просто управляет созданием удобных закладок.

Каждый из перечисленных выше объектов, имеет свой набор свойств и методов.

Более подробно о их сути вы можете почитать вот здесь.

В свою очередь, наиболее полный список всех объектов, с их описанием вы можете найти вот здесь.

Вкратце, любая программа на Visual Basic представляет собой сочетание приложения (в нашем случае Word), среды разработки и модулей.

Под модулями понимаются процедуры, которые содержат в себе программный код.

Для создания модуля, всего лишь нужно перейти в соответствующий шаблон (например, если мы создаём модуль, который должен быть доступен для всех документов, мы создаём его в шаблоне Normal). Для этого нажимаем на папке Microsoft Word Objects — правой кнопкой мыши и проходим по пути:

Модули могут быть представлены двумя видами:

  • подпрограммы
  • функции (предназначены для вычисления конкретного значения).

Структура типичной подпрограммы выглядит следующим образом:

Sub имя_подпрограммы ([Параметры])
Тело подпрограммы
End Sub

Структура функции выглядит следующим образом:

Sub имя ([Параметры])
Тело функции
имя=выражение
End Sub

Например, если у нас существует некая функция которая должна возвращать определённое значение, она может выглядеть следующим образом:

Sub TextFinder ([Параметры])
Тело функции
TextFinder=Selection.Find.found
End Sub

На примере тех же самых макросов, если у нас их более 1, они открываются в среде разработки, разделённые на отдельные подпрограммы, располагаясь друг за другом:

Для более полного ознакомления с языком Visual Basic для приложений, следует обратиться к официальному справочнику по языку.

Visual Basic for Applications является объектно-ориентированном языком программирования и полностью поддерживает постулаты этой концепции.

Типичная команда выглядит как разделённая точками в стиле ООП, где мы спускаемся по иерархии в самый низ, — до конкретного действия:

Application.ActiveDocument.PageSetup.Orientation = wdOrientLandscape

Например, приведённая выше команда, служит для того, чтобы установить альбомную ориентацию листа.

В редакторе кода присутствует система автодополнения кода: после того как вы ввели первый уровень объектной модели и поставили после него точку, система сама предлагает вам доступные варианты следующего уровня:

Весьма полезной является и справочная система, встроенная в редактор:
для получения справки необходимо всего лишь поставить курсор на нужную команду или место кода и нажать F1. Такая оперативность получения справки существенно облегчает самостоятельное изучение программирования в этой среде:

Достаточно интересным является режим отладки программы. Для этого, вам необходимо
записать какой-либо макрос, далее, войти в режим его отладки:

В этом режиме вы увидите, что та команда, которая будет выполнена следующей, — окрашена жёлтым цветом. В этом режиме исполнение команд производится построчно, что позволяет отловить ошибку, закравшуюся на каком-либо из этапов.

Для того чтобы исполнить следующую команду, следует каждый раз нажимать на клавишу F8:



Если параллельно с редактором кода вы откроете документ Word, на примере которого вы отрабатываете этот макрос, то вы будете сразу визуально видеть, что делает каждая построчно выполняемая команда (например, если это переход в некую ячейку таблицы и её выделение, — вы будете видеть этот процесс пошагово).

Но тут есть один нюанс: как вы могли видеть выше, программа начинает исполняться с самого начала. Но программа может быть достаточно длинной! Как сделать так, чтобы можно было провести, условно говоря, «юнит-тест» участка программы, который находится не в самом начале?

Для этого нужно всего лишь кликнуть в серую зону слева от программы — и там появится красная метка. Она означает то место, с которого стартует выполнение кода. Теперь, если мы нажмём на F8, — начало исполнения перескочит на эту метку:


Вообще говоря, программирование на VBA может быть достаточно мощной штукой, так как позволяет не только писать некие простые макросы, но даже и создать свой программный продукт, для генерации каких-либо отчётов или форм (и не только). Да, конечно, я сам имею такую слабость, — не желая изучать имеющиеся у продукта инструменты, пытаюсь решить проблему собственными знакомыми костылями (ну, знаю я, например, Java, — значит, буду решать проблему в рамках этого языка, игнорируя встроенные возможности Word). Однако, это не совсем правильный подход, так как «ученье — свет» :-).

Кто к этому так подходит, имеет и неплохие плюшки: совсем недавно на хабре вышла статья «как я с помощью VBA оплатил себе университет», которая наглядно показывает, что программирование на этом языке, в среде Office ещё рано списывать и может быть к этому стоит присмотреться повнимательней.

P.S. Вот мы тут гоняемся за интеллектуальными IDE, модными актуальными языками… А может вот оно, а? :-)

Будет очень интересно почитать в комментах, если кто то из читателей использовал неким интересным образом программирование под word в VBA и какие результаты это дало!

В двух словах изложу свой опыт: приходилось использовать достаточно продвинутые макросы для написания документации по компьютерному железу. Макросы позволяли «одним кликом» форматировать гигантскую таблицу с параметрами (регистры, поля регистров и их описание и т.д.). Форматировать хитро: первую строку выделить, первый столбец — искать в каждой строке диапазон битов регистра, вида [12:0], если найдено — применить стиль; такая же сложная логика форматирования по всей таблице (поиск определённых участков и их оформление. Скажем, таблица на 50 строк форматировалась… Секунд 15-20. Вручную — до бесконечности (в зависимости от лени и загруженности работой). Так что, макросы имеют право на жизнь!

Картинка pch.vector, freepik

Практически каждый из читателей, наверняка не раз (а кто-то и на постоянной основе), имеет потребность в написании и редактировании документов в среде Word.

Однако если подобная деятельность производится с некоторой периодичностью, пытливый ум сразу начинает думать о способах оптимизации своего труда. Одним из таких способов является программирование в среде Visual Basic for Applications,- среде разработки, которая встроена в известные офисные продукты: Word, Excel, PowerPoint и т.д. Статья больше вводная, для тех, «кто совсем не в теме» :-).

Следует сразу оговориться, что любое программирование требует для изучения достаточных временных ресурсов и, в ряде случаев, подобные трудозатраты могут быть неоправданными.

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

Макрос
Тут следует сказать, что по умолчанию, меню для записи макроса скрыто и его необходимо явным образом включить. Для этого нужно пройти по пути: Файл-Параметры

В открывшемся окне перейти в настройку ленты:

Далее, в правом окне, под названием «Основные вкладки», поставить галочку рядом с опцией «разработчик»:

В результате этих действий на ленте сверху у вас появится вкладка «разработчик»:

Войдя в которую, в левой части, вы как раз и сможете найти две интересующие нас опции: «Visual Basic» и «Макросы»:

Соответственно, далее если мы нажимаем на кнопку «Запись макроса», то мы сможем записать нашу последовательность действий:

Созданный макрос можно сохранить либо в конкретном документе, либо сделать его доступным для всех документов (если сохраним его в шаблоне normal.dotm):

После чего, записанный макрос может быть воспроизведён, если мы перейдём, нажав на кнопку «Макросы»:

Для многих достаточно тривиальных задач, этого бывает достаточно. Однако бывают ситуации, когда нам необходимо применить программирование.

Здесь существуют 2 опции:

  • правка кода уже имеющегося макроса
  • написание кода с нуля.

Для первого случая, нам нужно перейти нажав на «макросы», для того чтобы открылась окно выбора макроса и нажать на кнопку «отладка»:

Это приведёт к запуску среды разработки, где вы сможете увидеть свой записанный макрос в виде кода. Кстати говоря, это является одним из интересных лайфхаков, когда недостаточное знание программирования на VBA вы подменяете сгенерированным кодом макроса и реверс-инжинирингом, с попыткой вникнуть, «а как оно там внутри устроено?»:

Чуть выше, мы произвели ряд манипуляций, для того чтобы вынести вкладку «разработчик» на ленту. Однако если вы хотите не писать макросы, а писать код сразу, совершенно необязательно добавлять эту вкладку на ленту.

Среду разработки можно вызвать нажатием сочетания клавиш Alt+F11, после чего, написав нужный код, запустить его прямо из среды разработки.

Список готовых макросов можно вызвать нажатием сочетания клавиш ALT+F8.

Visual Basic for Applications(VBA)
Как мы уже говорили, разработка кода для приложений Office ведётся с использованием специального кода, который является версией интерпретируемого языка Visual Basic (несколько упрощённой его версией).

Благодаря использованию объектной модели компонентов (COM), могут применяться компоненты, используемые в ряде программ одновременно, для этого используется технология OLE (Object Linking and Embedding), суть которой заключается передаче части работы от одной программы к другой (в рамках среды Windows), и получение обратно результата.

Это означает, что теоретически, вы можете на VBA написать программу, которая будет использовать, например, средства Photoshop или Corel Draw, если конечно они установлены у вас на компьютере (однако, есть подозрение, что для этого потребуется более расширенная версия языка, чем тот, который идёт в комплекте с пакетом Office).

В рамках VBA объекты представлены в виде иерархии: Application/Document/Paragraph и т.д., то есть, как можно видеть в этой строке, каждый предыдущий — содержит последующий.

Получается своего рода «матрёшка», где одно вложено в другое и, если задуматься, это достаточно логично.

Например, главным объектом является Application. Создание этого объекта, другими словами, означает просто запуск Word. Но программа сама по себе никому не интересна, необходимо, чтобы внутри этой программы был создан или открыт некий документ (объект Document). В свою очередь, этот объект содержит целый ряд других элементов иерархии, которые служат для задания его параметров и оформления.

Согласно этому источнику, несмотря на то, что Word содержит множество объектов, по большому счёту, для успешной работы достаточно понимания всего лишь 5 объектов:

  • Application
  • Document
  • Selection
  • Range
  • Bookmark

Логика здесь следующая:

  • мы запустили Word (Application),
  • создали или открыли в нём документ(Document),
  • дальнейшие манипуляции в этом документе происходят либо с постановкой курсора в определенное место, либо с выделением определённого места в документе(Range).

Последний же объект (Bookmark) имеет смысл изучить для создания удобной навигации по документам, так как он просто управляет созданием удобных закладок.

Каждый из перечисленных выше объектов, имеет свой набор свойств и методов.

Более подробно о их сути вы можете почитать вот здесь.

В свою очередь, наиболее полный список всех объектов, с их описанием вы можете найти вот здесь.

Вкратце, любая программа на Visual Basic представляет собой сочетание приложения (в нашем случае Word), среды разработки и модулей.

Под модулями понимаются процедуры, которые содержат в себе программный код.

Для создания модуля, всего лишь нужно перейти в соответствующий шаблон (например, если мы создаём модуль, который должен быть доступен для всех документов, мы создаём его в шаблоне Normal). Для этого нажимаем на папке Microsoft Word Objects — правой кнопкой мыши и проходим по пути:

Модули могут быть представлены двумя видами:

  • подпрограммы
  • функции (предназначены для вычисления конкретного значения).

Структура типичной подпрограммы выглядит следующим образом:

Sub имя_подпрограммы ([Параметры])
Тело подпрограммы
End Sub

Структура функции выглядит следующим образом:

Sub имя ([Параметры])
Тело функции
имя=выражение
End Sub

Например, если у нас существует некая функция которая должна возвращать определённое значение, она может выглядеть следующим образом:

Sub TextFinder ([Параметры])
Тело функции
TextFinder=Selection.Find.found
End Sub

На примере тех же самых макросов, если у нас их более 1, они открываются в среде разработки, разделённые на отдельные подпрограммы, располагаясь друг за другом:

Для более полного ознакомления с языком Visual Basic для приложений, следует обратиться к официальному справочнику по языку.

Visual Basic for Applications является объектно-ориентированном языком программирования и полностью поддерживает постулаты этой концепции.

Типичная команда выглядит как разделённая точками в стиле ООП, где мы спускаемся по иерархии в самый низ, — до конкретного действия:

Application.ActiveDocument.PageSetup.Orientation = wdOrientLandscape

Например, приведённая выше команда, служит для того, чтобы установить альбомную ориентацию листа.

В редакторе кода присутствует система автодополнения кода: после того как вы ввели первый уровень объектной модели и поставили после него точку, система сама предлагает вам доступные варианты следующего уровня:

Весьма полезной является и справочная система, встроенная в редактор:
для получения справки необходимо всего лишь поставить курсор на нужную команду или место кода и нажать F1. Такая оперативность получения справки существенно облегчает самостоятельное изучение программирования в этой среде:

Достаточно интересным является режим отладки программы. Для этого, вам необходимо
записать какой-либо макрос, далее, войти в режим его отладки:

В этом режиме вы увидите, что та команда, которая будет выполнена следующей, — окрашена жёлтым цветом. В этом режиме исполнение команд производится построчно, что позволяет отловить ошибку, закравшуюся на каком-либо из этапов.

Для того чтобы исполнить следующую команду, следует каждый раз нажимать на клавишу F8:



Если параллельно с редактором кода вы откроете документ Word, на примере которого вы отрабатываете этот макрос, то вы будете сразу визуально видеть, что делает каждая построчно выполняемая команда (например, если это переход в некую ячейку таблицы и её выделение, — вы будете видеть этот процесс пошагово).

Но тут есть один нюанс: как вы могли видеть выше, программа начинает исполняться с самого начала. Но программа может быть достаточно длинной! Как сделать так, чтобы можно было провести, условно говоря, «юнит-тест» участка программы, который находится не в самом начале?

Для этого нужно всего лишь кликнуть в серую зону слева от программы — и там появится красная метка. Она означает то место, с которого стартует выполнение кода. Теперь, если мы нажмём на F8, — начало исполнения перескочит на эту метку:


Вообще говоря, программирование на VBA может быть достаточно мощной штукой, так как позволяет не только писать некие простые макросы, но даже и создать свой программный продукт, для генерации каких-либо отчётов или форм (и не только). Да, конечно, я сам имею такую слабость, — не желая изучать имеющиеся у продукта инструменты, пытаюсь решить проблему собственными знакомыми костылями (ну, знаю я, например, Java, — значит, буду решать проблему в рамках этого языка, игнорируя встроенные возможности Word). Однако, это не совсем правильный подход, так как «ученье — свет» :-).

Кто к этому так подходит, имеет и неплохие плюшки: совсем недавно на хабре вышла статья «как я с помощью VBA оплатил себе университет», которая наглядно показывает, что программирование на этом языке, в среде Office ещё рано списывать и может быть к этому стоит присмотреться повнимательней.

P.S. Вот мы тут гоняемся за интеллектуальными IDE, модными актуальными языками… А может вот оно, а? :-)

Будет очень интересно почитать в комментах, если кто то из читателей использовал неким интересным образом программирование под word в VBA и какие результаты это дало!

В двух словах изложу свой опыт: приходилось использовать достаточно продвинутые макросы для написания документации по компьютерному железу. Макросы позволяли «одним кликом» форматировать гигантскую таблицу с параметрами (регистры, поля регистров и их описание и т.д.). Форматировать хитро: первую строку выделить, первый столбец — искать в каждой строке диапазон битов регистра, вида [12:0], если найдено — применить стиль; такая же сложная логика форматирования по всей таблице (поиск определённых участков и их оформление. Скажем, таблица на 50 строк форматировалась… Секунд 15-20. Вручную — до бесконечности (в зависимости от лени и загруженности работой). Так что, макросы имеют право на жизнь!

Аннотация: Язык Visual Basic for Applications (Visual Basic для приложений, сокращенно VBA) является основным инструментом офисного программирования.

13.1. Visual Basic for Applications

Язык Visual Basic for Applications (Visual Basic для приложений, сокращенно VBA) является основным инструментом офисного программирования, т.е. программирования в пакетах MS Office. VBAреализация языка программирования Visual Basic, встроенная в линейку продуктов Microsoft Office, а также во многие программные пакеты, такие как AutoCAD, WordPerfect и другие.

Язык Basic был разработан как средство обучения и работы непрофессиональных программистов. Его назначение ясно из названия, которое является сокращением от Beginner‘s All-purpose Symbolic Instruction Code (многофункциональный язык символических инструкций для начинающих). Популярность этому языку придала его простота. Язык Basic поставлялся вместе с компьютерами и рекомендовался для начинающих программистов.

Microsoft Visual Basic (VB) – популярный инструмент разработки приложений в среде Windows, является очень удобным средством для решения небольших задач и для обучения непрограммистов, которые хотели бы создавать собственные приложения.

В MS Office 97 впервые была реализована общая среда разработки VBA 5.0 для решения задач как по автоматизации операций, так и по созданию законченных приложений. VBA 5.0 использовала тот же самый языковый механизм и среду разработки, что и универсальная система VB 5.0. В состав новых версий MS Office включаются и новые версии VBA, которые применяются в настоящее время во многих офисных пакетах. Язык VBA, являясь унифицированным языком программирования для всех приложений, упрощает создание программных решений. VBA заменил прежние специализированные языки разработки, например, WordBasic, и расширил их функциональные возможности.

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

Полнофункциональная среда разработки одинакова вне зависимости от приложений и включает в себя средства отладки, редактирования программного кода, проверку синтаксиса и просмотра объектов приложений. Обладая всеми чертами современных объектно-ориентированных языков, VBA поддерживает механизм визуального проектирования форм, позволяет включать в диалоговые окна и внедрять в документы элементы управления на базе ActiveX.

Если процедуры VBA используют специфические объекты приложения, то они могут выполняться только в рамках приложения, для которого они написаны. Программные решения могут объединять одновременно несколько приложений, например, можно программно создать документ MS Word на основе данных рабочей книги MS Excel.

13.2. Преимущества и недостатки разработки приложений в офисной среде

К достоинствам VBA можно отнести следующие:

  • относительная простота разработки. Несмотря на свою мощность и гибкость, этот язык очень прост для изучения. Пользователи- непрограммисты могут управлять своим документом, сами создавать приложения «под себя»;
  • язык встроен в офисную среду. Пакет MS Office широко распространен. Миллионы людей по всему миру используют приложенияMS Office в своей повседневной работе и им проще работать с уже известной технологией. Любое дополнительное решение в этой среде не вызывает серьезных затрат на обучение и поддержку;
  • сокращение времени и затрат при использовании MS Office в качестве платформы для разработки объясняется тем, что большинство необходимых функций уже реализовано в офисных приложениях. Это форматирование текстов, выполнение разного рода расчетов, поиск и отбор данных, построение диаграмм и т.д. Разработчик включает готовые компоненты во вновь создаваемые приложения, может повторно задействовать разработанные программы в нескольких проектах, основанных на одном или на разных офисных приложениях;
  • среда MS Office обеспечивает интегрированные решения. Так как все
    офисные приложения тесно интегрированы и имеют единый интерфейс, решения, создаваемые с помощью компонентов MS Office, будут иметь похожую структуру и включать все средства обработки документов, необходимые для работы конечного пользователя.

Основными недостатками VBA являются:

  • невозможность создания автономного приложения и открытость
  • программ для случайного изменения;
  • реализована только парольная защита модулей проекта;
  • наличие процедур VBA может восприниматься как макровирусы.

Вследствие широкого распространения макровирусов в офисных пакетах предусмотрены опции для защиты от вирусов. Пользователь по своему усмотрению может исполнять макросы VBA или не исполнять их.

ГЛАВА 1

1.1. Зачем программировать в Microsoft Office

Ответ на этот вопрос прост: чтобы не делать лишней работы. Программирование в Office — это, прежде всего, уменьшение количества повторяющихся действий (и ручной работы, которая для этого требуется). Вот примеры некоторых типичных ситуаций, когда использование программирования просто напрашивается:

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

разновидность такой же ситуации: одни и те же данные нужно использовать несколько раз. Например, вы заключаете договор с заказчиком. Одни и те же данные (наименование, адрес, расчетный счет, номер договора, дата заключения, сумма и т. п.) могут потребоваться во многих документах: самом договоре, счете, счете-фактуре, акте сдачи выполненных работ и т. д. Логично один раз ввести эту информацию (скорее всего, в базу данных), а затем автоматически формировать (например, в Word) требуемые документы;

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

Основыпрограммирования в Microsoft Office

13

ваний, она в среднем составляет около 2%. «Вылавливать» потом такие ошибки в уже введенных данных — очень тяжелый труд, поэтому лучше сразу сделать так, чтобы они не возникали.

В общем, любое действие, которое вам приходится повторять несколько раз, — это возможный кандидат на автоматизацию. Например, занесение сотен контактов в Outlook, или замена ресурса в десятках проектов Project, или анализ информации из базы данных за разные периоды в таблице Excel — это те ситуации, когда знание объектных моделей приложений Office спасет вас от нескольких часов или даже дней скучного труда.

Конечно, есть еще практиканты и аналогичный бесплатный трудовой ресурс, но хочется ли вам потом заниматься еще и поиском ошибок за ними? Кроме того, программирование несет и другие преимущества для сотрудника, который использует его в работе:

повышается авторитет сотрудника в глазах руководства и других коллег;

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

1.2. Что такое язык VBA

Поскольку эта книга предназначена для обычных пользователей, то без объяснения этого вопроса не обойтись. Формальное определение такое.

VBA (Visual Basic for Applications) — это диалект языка Visual Basic, расши-

ряющий его возможности и предназначенный для работы с приложениями Microsoft Office и другими приложениями от Microsoft и третьих фирм.

В принципе, при программировании в Office можно вполне обойтись и без языка VBA. Подойдет любой COM-совместимый язык, например: обычный

Visual Basic, VBScript, Java, JScript, C++, Delphi и т. п. Можно использовать и

.NET-совместимые языки программирования: VB.NET, C# и т. п. Вам будут доступны все возможности объектных моделей приложений Office. Например, если сохранить следующий код в файле с расширением vbs и запустить его на выполнение, то будет запущен Word, в котором откроется новый документ и будет впечатан текст:

Dim oWord

Set oWord = CreateObject(«Word.Application») oWord.Visible = true

oWord.Documents.Add

oWord.Selection.TypeText («Привет от VBScript»)

Тем не менее, VBA — это обычно самый удобный язык для работы с приложениями Office. Главная причина проста — язык VBA встроен в приложения Office, и код на языке VBA можно хранить внутри документов приложений Office: в документах Word, книгах Excel, презентациях PowerPoint и т. п. Конечно же, этот код можно запускать из документов на выполнение, поскольку среда выполнения кода VBA (на программистском сленге — хост) встроена внутрь этих приложений.

В настоящее время VBA встроен:

во все главные приложения Microsoft Office — Word, Excel, Access, PowerPoint, Outlook, FrontPage, InfoPath;

вдругие приложения Microsoft, такие как Visio и Project;

вболее 100 приложений третьих фирм, например, в CorelDRAW и CorelWordPerfect Office 2000, AutoCAD и т. п.

Но есть также и множество других преимуществ.

VBA — универсальный язык. Освоив его, вы не только получите ключ ко всем возможностям приложений Office и других, перечисленных ранее, но и будете готовы к тому, чтобы:

создавать полноценные приложения на Visual Basic (поскольку эти языки — близкие родственники);

использовать все возможности языка VBScript (это вообще «урезанный» VBA). В результате в вашем распоряжении будут универсальные средства для создания скриптов администрирования Windows, Web-

страниц (VBScript в Internet Explorer), Web-приложений ASP, для при-

менения в пакетах DTS и заданиях на SQL Server, а также для создания серверных скриптов Exchange Server и многое-многое другое.

VBA изначально был ориентирован на пользователей, а не на профессиональных программистов (хотя профессионалы пользуются им очень активно), поэтому создавать программы на нем можно быстро и легко. Кроме того, в Office встроены мощные средства, облегчающие работу пользователя: подсказки по объектам и по синтаксису, макрорекордер и т. п.

При создании приложений на VBA вам, скорее всего, не придется заботиться об установке и настройке специальной среды программирования и наличии нужных библиотек на компьютере пользователя — Microsoft Office есть практически на любом компьютере.

Несмотря на то, что часто приложения VBA выполняются медленнее, чем бы вам хотелось, они нересурсоемки и очень хорошо работают, например, на сервере терминалов. Но, как правило, для программ на VBA особых требований на производительность и не ставят: для написания игр, драй-

Основыпрограммирования в Microsoft Office

15

веров, серверных продуктов он не используется. По моему опыту, возникающие проблемы с производительностью VBA-приложений — это чаще всего не проблемы VBA, а проблемы баз данных, к которым они обращаются. Если проблемы действительно в VBA (обычно тогда, когда вам требуется сложная математика), то всегда есть возможность написать важный код на C++ и обращаться к нему как к обычной библиотеке DLL или встраиваемому приложению (Add-In) для Word, Excel, Access и т. п.

Программы на VBA по умолчанию не компилируются, поэтому вносить в них исправления очень удобно. Не нужно разыскивать исходные коды и перекомпилировать программы.

В среде программистов-профессионалов считается, что быстрее всего научиться создавать профессиональные приложения можно именно при помощи VBA и объектов приложений Office. Другие языки программирования (C++, Java, Delphi) придется осваивать намного дольше, а их возможности во многом избыточны для большинства повседневных задач, которые встречаются на любом предприятии. Кроме того, использование возможностей объектов Office (графического интерфейса, средств работы с текстом, математических функций и т. п.) позволит резко снизить трудоемкость при создании приложений.

1.3. Макрорекордер: быстрое создание макросов

В большинство программ Microsoft Office (исключая Access и FrontPage)

встроено замечательное средство, которое позволит вам создавать программы, вообще ничего не зная о программировании. Это средство называется макрорекордером.

Макрорекордер, как понятно из его названия, — это средство для записи макросов. Макрос — всего лишь еще одно название для VBA-программы, а макрорекордер — средство для его автоматического создания.

Приложения Microsoft Office 2003 по умолчанию настроены так, что не позволяют запускать макросы. Поэтому перед тем, как приступать к созданию макросов,

в меню Сервис | Макрос | Безопасность переставьте переключатель Уровень безопасности в положение Средняя или Низкая, а потом закройте и снова откройте данное приложение. Это потребуется сделать только один раз в начале работы.

Принцип работы макрорекордера больше всего похож на принцип работы магнитофона: мы нажимаем на кнопку — начинается запись тех действий,

которые мы выполняем. Мы нажимаем на вторую кнопку — запись останавливается, и мы можем ее проиграть (т. е. повторно выполнить ту же последовательность действий).

Конечно, макрорекордер позволяет написать только самые простые VBAпрограммы. Однако и он может принести много пользы. Например, можно «положить» на горячие клавиши те слова, словосочетания, варианты оформления и т. п., которые вам часто приходится вводить (должность, название фирмы, продукт, ФИО директора и ответственного исполнителя и т. д.), этим вы сэкономите много времени.

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

Перед созданием макроса в макрорекордере:

необходимо очень тщательно спланировать макрос, хорошо продумав, что вы будете делать и в какой последовательности. Если есть возможность, определите подготовительные действия. Например, если нужно вставить текущую дату в начало документа, может быть, имеет смысл первой командой макроса сделать переход на начало документа (<Ctrl>+<Home>);

посмотрите, нет ли готовой команды, которую можно сразу назначить клавише или кнопке на панели инструментов без создания макроса. Сделать это можно при помощи меню Сервис | Настройка. С вкладки Команды можно перетащить нужную команду на требуемую панель управления, и, нажав на этой же вкладке кнопку Клавиатура, в окне Настройка клавиатурыназначить длякоманды нужнуюкомбинацию клавиш;

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

Чтобы создать макрос в макрорекордере (для тех программ Microsoft Office, для которых это средство предусмотрено, например, Word, Excel, PowerPoint, Project):

1.В меню Сервис | Макрос выберите команду Начать запись. В открывшемся окне Запись макроса (рис. 1.1) вам потребуется определить:

Имя макроса. Правило такое: имя не должно начинаться с цифры, не должно содержать пробелы и символы пунктуации. Максимальная длина в Excel — 64 символа, в Word — 80 символов. Можно писать порусски;

Основыпрограммирования в Microsoft Office

17

будет ли макрос назначен кнопке на панели управления или комбинации клавиш. Выполнить это, а также задать другие средства для вызова макроса можно и потом — об этом будет рассказано в следующем разделе;

где сохранить макрос. В Word в вашем распоряжении текущий файл и шаблон для всех вновь создаваемых документов — Normal.dot, в Excel — текущая книга, возможность создать макрос одновременно с созданием новой книги и личная книга макросов PERSONAL.XLS (макросы из этой скрытой книги будут доступны во всех книгах). Подробнее про то, где может храниться программный код, мы поговорим в

разд. 2.2;

Описание. В это поле лучше ввести информацию о том, для каких целей создается этот макрос — это подарок не только для других пользователей, но и для себя (через несколько месяцев).

Рис. 1.1. Диалоговое окно Запись макроса

2.После нажатия кнопки OK или назначения кнопки или клавиатурной комбинации начнется запись макроса. Указатель мыши при этом примет вид магнитофонной кассеты и появится маленькая панель Остановить запись. На ней всего две кнопки — Остановить запись и Пауза. Если вы случайно закрыли эту панель, остановить запись можно через меню Сер-

вис | Макрос | Остановить запись.

3.Самый простой способ запустить макрос, которому не назначена кнопка или клавиатурная комбинация, — в меню Сервис выбрать Макрос | Макросы (или нажать комбинацию клавиш <Alt>+<F8>), в открывшемся окне

Макрос (см. рис. 1.2) в списке выбрать нужный макрос и нажать кнопку Выполнить. Из этого же окна можно просматривать и редактировать макросы, удалять или перемещать их и т. п.

Если макросов создано много, то получить список всех назначений клавиш (включая назначения для встроенных макросов Word) можно при помощи меню Сервис | Макрос | Макросы, затем в окне Макрос в списке Макросы из выбрать Команд Word, а в списке Имя выбрать макрос ListCommands и нажать кнопку Выполнить. В ответ на приглашение нужно выбрать Текущие настройки меню и клавиш (иначе будет выведен полный список команд Word на 26 страниц). В ваш документ будет вставлена таблица с текущими назначениями клавиш, которую можно распечатать.

Если у вас уже есть значительное количество созданных при помощи макрорекордера макросов, то после освоения языка VBA имеет смысл подумать над ними и, может быть, внести изменения. Чаще всего стоит обратить внимание на следующие моменты:

если в вашем макросе повторяются какие-либо действия, возможно стоит организовать цикл;

может быть, есть смысл в ходе выполнения уточнить что-либо у пользователя (при помощи встроенной функции VBA InputBox() или элементов управления);

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

Как все это сделать, будет рассказано в следующих главах.

И еще один очень важный момент, связанный с макрорекордером. Помимо того, что он позволяет создавать простенькие программы, пригодные для самостоятельного использования без всяких доработок, макрорекордер — это еще и ваш разведчик в мире объектных моделей приложений Office. Опытные разработчики часто пользуются им для того, чтобы понять, какие объекты из огромных объектных моделей приложений Office можно использовать для выполнения тех или иных действий.

Приведу пример: вам нужно автоматизировать создание диаграмм в Excel. Поскольку в русской версии Excel для создания диаграммы вручную вы используете команду Вставка | Диаграмма, то, скорее всего, в справке по VBA вы начнете в первую очередь искать объект Diagram. И вы его найдете и, возможно, потратите определенное время на его изучение, прежде чем поймете, что это не та диаграмма! Объект Diagram представляет то, что в русской версии Excel называется «Схематическая диаграмма» (доступна из того же меню Вставка), а обычная диаграмма — это объект Chart. А вот если бы вы пустили вперед разведчика (т. е. создали бы диаграмму с записью в макрорекорде-

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
Microsoft Word (Windows)
Логотип Microsoft Word 2007

Скриншот Microsoft Word 2007

Тип Текстовый процессор
Разработчик Майкрософт
ОС Microsoft Windows
Версия 12.0.6425.1000 (2007 SP2) — апрель — май 2009
Лицензия Собственническое
Сайт Домашняя страница Microsoft Office Word

Microsoft Word (часто — MS Word, WinWord или просто Word) — это текстовый редактор, предназначенный для создания, просмотра и редактирования текстовых документов, с локальным применением простейших форм таблично-матричных алгоритмов. Текстовый процессор, выпускается в составе пакета Microsoft Office. Первая версия была написана Ричардом Броди (Richard Brodie) для IBM PC, использующих 1983 году. Позднее выпускались версии для (1984), SCO UNIX и Microsoft Windows (1989).

Содержание

  • 1 Начало
  • 2 1990—1995 годы
  • 3 Настоящее время
  • 4 История версий
  • 5 Недокументированные возможности и курьёзы
    • 5.1 Функция rand()
    • 5.2 Функция lorem()
    • 5.3 Курьёзные ошибки в модуле проверки русской орфографии
  • 6 Примечания
  • 7 Ссылки
  • 8 Литература

Начало

Microsoft Word многим обязан Bravo — текстовому процессору с оригинальным графическим интерфейсом, разработанному в исследовательском центре «Xerox PARC». Создатель Bravo, Чарльз Симони (Charles Simonyi) покинул PARC в 1981 году. Тем же летом Симони переманил Броди, с которым вместе работал над Bravo.

Первый выпуск Word для MS-DOS состоялся в конце 1983 года. Он был плохо принят рынком, продажи снижало наличие конкурирующего продукта — WordPerfect.

Microsoft Word (Mac OS X)
Тип Текстовый процессор
Разработчик Майкрософт
ОС Mac OS X
Версия 12.1.1 сборка 080522 (2008) — 14 мая 2008
Лицензия Собственническое
Сайт Microsoft Word 2008 for Mac

Однако версия для Макинтоша, выпущенная в 1985 году, получила широкое распространение. Через два года «Word 3.01 для Macintosh» усилил позиции (версия 3.0 изобиловала ошибками и быстро была заменена). Как и прочее программное обеспечение для Макинтоша, Word был полностью

Хотя MS-DOS и являлась текстовой операционной системой, лишённой графической оболочки, Word для DOS был первым текстовым процессором для IBM PC, который был способен отображать разметку текста, например, полужирный или курсивный текст в процессе редактирования. Однако он всё же не являлся в полном смысле WYSIWYG-редактором. Другие же текстовые процессоры, такие как WordStar и WordPerfect, использовали простой текстовый экран с кодами разметки, иногда текст был цветным.

Однако, поскольку в большинстве программного обеспечения под DOS применялись собственные труднозапоминаемые комбинации «горячих клавиш» для каждой команды (например, в Word’е для DOS сохранение файла выполнялось по комбинации ESC-T-S) и большинство секретарей умели пользоваться только WordPerfect, компании весьма неохотно переходили на конкурирующие с ним продукты, имеющие сравнительно небольшие преимущества.

1990—1995 годы

Первая версия Word для Windows, выпущенная в 1989 году, продавалась по цене 500 долларов США. Она демонстрировала выбранный компанией Майкрософт путь развития: как и сама Windows, она многое взяла от Macintosh, и использовала стандартные клавиатурные сокращения (например, CTRL-S для сохранения файла). После выпуска в следующем году Windows 3.0 продажи поползли вверх (Word 1.0 гораздо лучше работал с Windows 3.0, чем с более старыми версиями Windows/386 и Windows/286), главный конкурент — WordPerfect — не смог выпустить рабочую версию под Windows, что оказалось для него смертельной ошибкой. Версия 2.0 утвердила WinWord на позиции лидера рынка.

У Word для Macintosh никогда не было серьёзных конкурентов, даже несмотря на наличие программ вроде Nisus, предоставлявшую возможность выделения нескольких несвязных кусков текста (появившуюся только в Word 2002 из Office XP) и несмотря на мнение многих пользователей об отсутствии кардинальных различий между версиями 3.01, выпущенной в 1987 году и версией 5.0, выпущенной в 1991. Однако, версия 6.0 для Macintosh, вышедшая в 1994 году, была многими воспринята довольно скептически. Это была первая версия без значительных отличий в коде ядра между версиями под Windows и под Mac. Версия под Windows, следовавшая за 2.0, была пронумерована как 6.0 для координации названия версий под разные платформы.

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

Настоящее время

Microsoft Word является наиболее популярным из используемых в данный момент текстовых процессоров, что сделало его бинарный формат документа стандартом де-факто, и многие конкурирующие программы имеют поддержку совместимости с данным форматом. Расширение «.doc» на платформе IBM PC стало синонимом двоичного формата Word 97—2000. Фильтры экспорта и импорта в данный формат присутствуют в большинстве текстовых процессоров.Формат документа разных версий Word меняется, различия бывают довольно тонкими. Форматирование, нормально выглядящее в последней версии, может не отображаться в старых версиях программы, однако есть ограниченная возможность сохранения документа с потерей части форматирования для открытия в старых версиях продукта. Последняя версия MS Word 2007 «использует по умолчанию» формат основанный на Microsoft Office Open XML. Спецификация форматов файлов Word 97-2007 были опубликован Microsoft в 2008 году.[1][2] Ранее, большая часть информации, нужной для работы с данным форматом, добывалась посредством обратного инжиниринга, поскольку основная её часть отсутствовала в открытом доступе или была доступна лишь ограниченному числу партнеров и контролирующих организаций.

Как и прочие приложения из Microsoft Office, Word может расширять свои возможности посредством использования встроенного макроязыка (сначала использовался WordBasic, с версии Word 97 применяется VBA — Visual Basic для приложений). Однако это предоставляет широкие возможности для написания встраиваемых в документы вирусов (так называемые «макровирусы»). Наиболее ярким примером была эпидемия червя Melissa. В связи с этим, многие считают разумной рекомендацию всегда выставлять наивысший уровень настроек безопасности при использовании Word (Меню: «Tools>Macro>Security», «Сервис>Макрос>Безопасность…» в локализованных русских версиях). Также нелишним будет использовать антивирусное программное обеспечение. Первым вирусом, заражавшим документы Microsoft Word, был DMV, созданный в декабре 1994 года Дж. МакНамарой для демонстрации возможности создания макровирусов. Первым же вирусом, попавшим в «дикую природу» и вызвавшим первую в мире эпидемию макровирусов (это произошло в июле-августе 1995 г.), был Concept.

История версий

Версии для 1983, ноябрь Word 1

  • 1985 Word 2
  • 1986 Word 3
  • 1987 Word 4, также известный как Microsoft Word 4.0 для PC
  • 1989 Word 5
  • 1991 Word 5.5
  • Версии для Apple Macintosh:

    • 1985, январь Word 1 для Macintosh
    • 1987 Word 3
    • 1989 Word 4
    • 1991 Word 5le
    • 1993 Word 6
    • 1998 Word 98
    • 2000 Word 2001, последняя из версий, совместимых с Mac OS 9
    • 2001 Word v.X, первая версия исключительно для Mac OS X
    • 2004 Word 2004
    • 2008 Word 2008

    Версии для Microsoft Windows:

    • 1989, ноябрь Word для Windows
    • 1991 Word 2 для Windows
    • 1993 Word 6 для Windows (номер «6» был введён для продолжения линейки номеров DOS-версий, единой нумерации с Mac-версиями и с WordPerfect, лидером рынка среди текстовых процессоров на тот момент)
    • 1995 Word 95, также известный как Word 7
    • 1997 Word 97, также известный как Word 8
    • 1999 Word 2000, также известный как Word 9
    • 2001 Word 2002 или Word 10
    • 2001 Word XP см выше.
    • 2003 Word 2003, также известный как Word 11, однако официально именуемый Microsoft Office Word 2003
    • 2007 Word 2007, революционная смена интерфейса, поддержка формата OOXML (docx)

    Версии для SCO UNIX:

    • Microsoft Word для UNIX Systems, Release 5.1

    Недокументированные возможности и курьёзы

    Следующие функции вводятся в любом месте документа с начала строки. Замена их на определённый текст осуществляется при нажатии клавиши Enter.

    Функция rand()

    =rand(x,y)

    В редакторе версии младше 2007 строка с командой будет заменена матрицей из панграмм:

    Съешь ещё этих мягких французских булок, да выпей чаю.

    Параметр x задаёт количество столбцов матрицы, y — количество строк. Параметры можно не указывать.

    В редакторе Word 2007 строка с данной функцией будет заменена на отрывок из текста справки, параметр x задаёт количество абзацев, y — количество предложений в каждом абзаце.

    Функция lorem()

    =lorem()

    В редакторе Word 2007 строка с данной функцией будет заменена на отрывок из текста Lorem ipsum.

    Курьёзные ошибки в модуле проверки русской орфографии

    • Набор фразы «Правоспособность-способность иметь права и нести гражданские обязанности» вызывает (в случае, если включена автоматическая проверка орфографии) незамедлительное закрытие приложения; при этом все открытые документы закрываются без сохранения изменений. В MS Word версии 2007 данная ошибка исправлена.
    • Модуль проверки орфографии в MS Word 2000 при наборе слова «мультиканальный» предлагает автозамену на фразу «мультик анальный» (как и модуль проверки орфографии в Firefox 3). Аналогичные курьёзы происходят с некоторыми другими словами: «стриптизерша» — «стриптиз ерша»; «отмелькала» — «отмель кала»; «спецназовец» — «спецназ овец»; «завязочками» — «завяз очками» и др. В Word 2003 пример не работает.
    • При наборе в MS Word 2000 фразы «Хочу избежать службу в армии» модуль проверки орфографии в качестве одного из вариантов исправлений предлагает текст «Ошибка в управлении. Глагол „избежать“ требует дополнения в родительном падеже. Например: „Никому не удалось избежать службы в армии“.»

    Примечания

    1. Microsoft Office Binary (doc, xls, ppt) File Formats. Microsoft (February 15 2008). Проверено 21 февраля 2008.
    2. Standard ECMA-376 — Office Open XML File Formats. Ecma International (December 2006). Проверено 21 февраля 2008.

    Ссылки

    • Спецификация формата Microsoft Word 97-2007(англ.)
    • MS-Word НЕ является форматом обмена документов(англ.)
    • Объектная модель Word(англ.)

    Литература

    • Tsang, Cheryl. Microsoft: First Generation. New York: John Wiley & Sons, Inc. ISBN 0-471-33206-2.

    Microsoft Office

    Клиентские приложения Accounting | Access | Communicator | Entourage | Excel | FrontPage | Groove | InfoPath | InterConnect | MapPoint | OneNote | Outlook | PowerPoint | Project | Publisher | SharePoint Designer | Visio | Word
    Серверные приложения Communications | Forms | Groove | PerformancePoint | Project | Project Portfolio | SharePoint

    Wikimedia Foundation.
    2010.

    Понравилась статья? Поделить с друзьями:
  • Ms word это системная программа или нет
  • Ms word это программа которая служит для
  • Ms word это программа какого назначения
  • Ms word это программа для распознавания текста или нет
  • Ms word это программа для обработки текстовой информации