Время на прочтение
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. Вручную — до бесконечности (в зависимости от лени и загруженности работой). Так что, макросы имеют право на жизнь!
Данная статья посвящена способам создания программ, работающих в среде Word 97 и Word 2000. К сожалению, лишь отдельные пользователи знают и применяют возможности Word для автоматизации работы с помощью макросов, и уж совсем единицы используют этот редактор для разработки программных продуктов. Подобная ситуация отчасти объясняется несколько пренебрежительным отношением многих профессиональных разработчиков программ к Visual Basic for Application — языку программирования, встроенному во все компоненты пакета Office 97. А ведь он позволяет создавать удачные программы и для упрощения работы с Office, и для проведения расчетов, и для обработки данных. Причем создавать такие продукты смогут даже начинающие, и им не потребуются ни руководства, ни дополнительное обучение. Нужно будет лишь наблюдать, исследовать, ставить эксперименты и делать выводы, а все это помогает выработать навыки научного подхода к различным явлениям.
Данная статья посвящена способам создания программ, работающих в среде Word 97 и Word 2000. К сожалению, лишь отдельные пользователи знают и применяют возможности Word для автоматизации работы с помощью макросов, и уж совсем единицы используют этот редактор для разработки программных продуктов. Подобная ситуация отчасти объясняется несколько пренебрежительным отношением многих профессиональных разработчиков программ к Visual Basic for Application — языку программирования, встроенному во все компоненты пакета Office 97. А ведь он позволяет создавать удачные программы и для упрощения работы с Office, и для проведения расчетов, и для обработки данных. Причем создавать такие продукты смогут даже начинающие, и им не потребуются ни руководства, ни дополнительное обучение. Нужно будет лишь наблюдать, исследовать, ставить эксперименты и делать выводы, а все это помогает выработать навыки научного подхода к различным явлениям.
Чтобы написать макросы на Visual Basic, не потребуется многостраничных руководств. И вообще, к последним лучше обратиться после того, как будет освоено не меньше половины возможностей этого языка, — тогда читать их будет гораздо легче, а новая информация усвоится быстрее.
Создание программы
В Visual Basic есть уникальное средство разработки программ — «Запись макросов», позволяющее легко писать простые макросы для Word, не используя описания языка. При работе в Word можно включать специальный режим записи макросов, при котором все действия в редакторе будут автоматически «переводиться» на Visual Basic и сохраняться в текстовом виде. Записанную программу затем можно изучить, чтобы разобраться с синтаксисом и устройством языка, а также необходимым образом его модифицировать.
Если требуется записать макрос, надо выбрать из меню «Сервис» пункт «Макросы», а из ниспадающего меню — пункт «Начать запись».
Документы Word могут содержать программы, которые можно вызвать, отметив определенную кнопку на Панели инструментов, нажав указанное сочетание клавиш, выбрав заданный пункт меню либо с помощью другого ПО. Причем можно даже сочетать разные способы вызова, поэтому перед записью макроса предлагается назначить какой-то один. Однако это можно сделать и позже в диалоговом окне «Настройка». После нажатия кнопки ОК в окне Word появится панель «Запись макроса». Теперь все действия пользователя тщательно протоколируются, хотя и с определенными ограничениями: невозможно выделить текст мышью (для этого следует воспользоваться клавишами <Стрелка вправо> + ), не работает контекстное меню при нажатии правой кнопки мыши и т. д.
Затем нужно нажать слева на панели кнопку «Остановка записи». Если хотите прервать работу и выделить какой-нибудь объект мышью, то выберите на этой панели правую кнопку «Пауза». Чтобы продолжить процесс записи, нажмите ее еще раз.
Редактор Visual Basic
Этот редактор можно вызвать либо из меню «Сервис?Макросы?Редактор Visual Basic», либо нажав клавиши +.
В него входят «Менеджер проектов», «Окно свойств», «Окно отладки», «Окно контрольного значения», «Окно локальных переменных», «Стек вызова», «Окно просмотра объектов», окна текста программ и дизайна форм.
Программы на Visual Basic хранятся только в документах и шаблонах Word. Когда они содержат макросы, их называют проектами. В окне «Менеджера проектов» отображаются названия всех доступных проектов, в состав которых входят открытые документы и шаблоны, в том числе и загружаемые при старте Word. Кроме того, там всегда имеется шаблон Normal.dot со всеми сохраненными макросами.
Щелкнув мышью по знаку «+» слева от названия, можно получить список компонентов проекта, однако это делается лишь с открытыми в Word проектами. А чтобы для редактирования загруженного шаблона иметь доступ к коду, требуется открыть его как файл.
Запретить просмотр компонентов проекта можно с помощью пароля, однако в программировании подобные действия являются признаком «дурного тона».
Компоненты проекта делятся на пять больших категорий.
1. Microsoft Word объекты. Здесь есть только один объект, называющийся ThisDocument, контекстное меню которого появляется при нажатии правой кнопки мыши.
Для перехода к тексту или графике нужно выбрать пункт «Объект» (для Normal.dot недоступен). В документ Word можно вставить кнопки, поля ввода текста, поля выбора вариантов и т. д. Тогда после выбора пункта «Программа» контекстного меню объекта ThisDocument можно написать программу, которая будет выполняться нажатием соответствующей кнопки или введением текста. К ее написанию можно перейти и из контекстного меню самого объекта — выделите его, нажмите правую кнопку мыши и выберите пункт «Исходный текст». (В Microsoft Excel в качестве объектов представлены и сама рабочая книга Excel в целом и все ее листы по отдельности.)
2. Модули, или собственно макросы. Щелкнув дважды мышью на имени модуля, можно получить доступ к тексту программы или приступить к ее созданию. Программы, записанные с помощью средства записи макросов, хранятся в модуле NewMacros шаблона Normal.dot.
Чтобы сформировать новый модуль, нужно выбрать пункты «Вставить?Модуль», в окне программы написать Sub, далее назначить «уникальное имя программы» и нажать . После этого Word сам добавит фразу End Sub. Между этими двумя фразами и должен находиться текст основной части программы.
3. Модули класса. Класс — это тип объектов, определяемых программистом; данное понятие играет очень важную роль в программировании. Например, надо написать программу, работающую с электронными версиями классных журналов в школе, в каждом из которых есть подразделы: список учеников, таблица оценок, система вычисления средней оценки каждого ученика, список предметов и т.д. Можно, конечно, с помощью Visual Basic описать устройство каждого классного журнала, но тогда при однотипных действиях с группой журналов (в частности, при подсчете среднего балла оценок всех учащихся 7-х и 8-х классов) придется включать в текст программы множество операций с каждым компонентом журнала. А при добавлении нового журнала придется сочинять фрагмент программы, создающий список учащихся, предметов и др. Все это усложнит программу и потребует значительных усилий. Поэтому в языке введено понятие класса, т. е. нового типа объектов. Так, можно создать класс «Журналы» и описать в его модуле содержимое объектов этого класса: список учеников (Public Ученики(40) As String), предметов (Public Предметы(20) As String) и пр.
Теперь, чтобы создать новый объект класса «Журналы», не придется заниматься утомительным описанием новых списков учеников и предметов — достаточно будет в одной строке ввести команду «Объявить новую переменную класса Журналы» (Dim Журнал25 As Журналы) и присвоить нужные значения его соответствующим разделам (Журнал25.Ученики(1)=«Андреев»). Кроме того, в модуле класса можно написать программу вычисления средней оценки всех учащихся и, если необходимо, вызывать ее одной командой.
4. Формы — это диалоговые окна программ, которые можно разработать по своему вкусу. Чтобы в проект добавить форму, нужно выбрать пункты «Вставка? UserForm». Будет создано пустое диалоговое окно, в которое можно помещать кнопки, картинки, текст и многое другое.
5. Ссылки. Программы можно запускать и по вызову из другой программы, однако это делается только из загруженного в Word шаблона или документа. Если загружать проект постоянно нецелесообразно (например, подобный вызов используется достаточно редко), то лучше установить на него ссылку простым перетаскиванием значка шаблона в окно «Менеджера проектов», чтобы открыть доступ к программам.
Окно текста программ и дизайна форм — основное рабочее место на Visual Basic, здесь пишется текст программ и разрабатываются диалоговые окна. Чтобы открыть его для какого-либо компонента проекта, надо просто два раза щелкнуть на нем мышью или выбрать пункт «Программа». Редактор Visual Basic — дружественный, он постоянно подсказывает, какие параметры имеет та или иная команда и как надо корректно ее написать. Например, если набрать команду MsgBox (вызывает на экран диалоговое окно, в частности, «Сохранить изменения в документе?») и ввести затем открывающую круглую скобку, то над курсором сразу же появится подсказка. В ней содержится информация о синтаксисе данной команды, т. е. говорится, как и какие нужно задавать параметры в тексте программы, например, число кнопок, вид значков и звук.
Язык Visual Basic — объектно-ориентированный, значит, очень многие его команды имеют формат, отличный, скажем, от формата языков программирования Basic или Pascal. Типичная команда на Visual Basic выглядит так: <Объект>.<Объект, входящий в первый объект>.<…>.<Тот объект, с которым нужно произвести действие>.<Собственно действие>. Иными словами, каждая команда пишется как бы «с конца»: сначала определяется то, над чем надо произвести действие, т. е. объект, а уже затем само действие — метод. Разделитель компонентов команды — точка. Например, по команде Application.ActiveDocument.PageSetup.Orientation = wdOrientLandscape устанавливается альбомная ориентация листа документа. Такой же вид имеет и команда получения информации об ориентации листа, которая выглядит так: p = Application.ActiveDocument.PageSetup.Orientation.
После ее выполнения значение переменной р будет wdOrientLandscape или wdOrientPortrait соответственно. При написании команд редактор Visual Basic постоянно подсказывает следующий шаг — стоит только написать в тексте программы слово Application и поставить точку, как сразу появятся возможные варианты продолжения.
Нужный вариант можно выбрать мышкой, причем он обязательно будет правильным, но не в смысле верности алгоритма (это остается на совести программиста), а в смысле соответствия правилам синтаксиса и иерархии объектов, а также правописания слова. Если же снова поставить точку, то вновь будет выдан список различных вариантов продолжения.
Чтобы не вводить слова целиком, можно использовать команду завершения слова, например, вместо Application набрать Appli и нажать +<Пробел>. Редактор допишет слово до конца сам или предоставит возможность выбрать его, если нельзя однозначно определить по первым буквам. Предположим, если программист не воспользуется подсказкой, введет всю команду вручную и допустит в элементарном синтаксисе ошибку, то редактор не позволит ему работать дальше, выдав соответствующее сообщение.
Редактор, конечно, не найдет ошибку, если неверен алгоритм программы, здесь виноват программист или неправильно написано слово команды. В последнем случае он посчитает его новой командой, созданной самим программистом. Однако он сумеет отследить неправильно написанную команду, которая уже была известна.
Еще одно достоинство Visual Basic — прекрасная справочная система. Поставив курсор мыши на любую команду (или название объекта) и нажав клавишу , можно получить подробную справку о том, зачем она нужна и каков ее синтаксис. Кроме того, можно познакомиться с примером ее использования и, если необходимо, даже скопировать. (В справке Visual Basic for Application очень часто приводятся фрагменты кода программ, иллюстрирующие использование той или иной команды; скопировав, можно их изменить и использовать в своей программе.) К сожалению, большая часть справки приведена на английском языке.
Дружественность редактора позволяет самостоятельно изучать его — достаточно записать несколько макросов и с помощью справки изучить назначение каждой команды. Закомментировать, т. е. исключить из выполнения можно любую команду, поставив перед ней знак апострофа. Кроме того, после него можно написать пояснения к соответствующей части программы (все комментарии даются в Visual Basic зеленым цветом).
Если дважды щелкнуть мышью на названии формы, то откроется окно «Дизайна форм».
Отметив соответствующий элемент (кнопка, поле ввода, переключатель и др.) на панели инструментов «Элементы управления» и затем перетащив мышкой на поле формы, можно поместить его на форму. Если дважды щелкнуть на этом элементе, то откроется окно программ пользовательской формы, куда можно ввести программу, а чтобы она выполнялась, нужно снова сделать двойной щелчок на элементе.
Если требуется попасть в «Окно свойств», достаточно выбрать какой-нибудь элемент формы и указать в его контекстном меню пункт «Свойства».
Здесь можно задать все доступные свойства каждого элемента, например его цвет и границы, надпись, состояние (доступно/недоступно для изменений), а также поместить на элемент картинку из внешнего файла. Чтобы получить подробное описание функции каждого элемента окна свойств (их состав различен для каждого элемента формы), достаточно поставить на него курсор и нажать клавишу . Следует тщательно изучить назначение всех элементов данного окна.
Окно «Просмотр объектов», вызываемое с помощью клавиши или из меню «Вид», содержит краткий справочник, где приведены свойства и методы (действия и команды) объектов Visual Basic.
На панели инструментов «Правка» этого редактора есть соответствующие пункты для вызова описанных выше функций. Так, «Список свойств/методов» позволяет увидеть продолжение любой команды, а «Сведения» — выдает информацию о переменной, выделенной в данный момент. В редакторе Visual Basic, как и в Word, можно переходить к соответствующим его частям, поместив закладки в текст программы.
Все входящие в состав проекта модули можно сохранить в текстовом файле с расширением .bas. Для этого в «Менеджере проектов» нужно щелкнуть правой кнопки мыши на соответствующем модуле и из появившегося меню выбрать функцию «Экспорт файла». Теперь можно вставить сохраненный модуль по команде «Импорт файла» из того же меню. Модули и формы можно перетаскивать между различными проектами, копируя их из одного проекта в другой.
Продолжение в следующем номере.
Орлов Антон Александрович,
antorlov@inbox.ru, http://antorlov.chat.ru.
ГЛАВА 10
10.1. Зачем программировать в Word
Word — старейшее и самое популярное приложение, входящее в состав Microsoft Office. В большинстве организаций пользователи готовят документы именно в Word.
С точки зрения программирования Word — это, прежде всего, средство для изготовления отчетов к базам данных. При этом отчет — это любой документ, который формируется на основе информации из базы данных, например: договор, акт приемки-передачи, приходный кассовый ордер, объявление на взнос наличными, распоряжение в бухгалтерию, накладная и т. п. Конечно же, к отчетам, которые можно формировать в Word, относятся и документы со сводными данными — отчеты за период, ведомости и т. п.
Автору приходилось создавать приложения с отчетами, разработанными в самых разных программных продуктах — Microsoft Access, Crystal Reports, Microsoft Reporting Services и т. д. Если ваше приложение генерирует отчеты к базам данных в Microsoft Word, то, скорее всего, такие отчеты будут не самыми быстрыми, с точки зрения их формирования, и не самыми простыми, с точки зрения программирования. Зато совершенно точно они будут самыми дружелюбными по отношению к конечному пользователю. Почему?
Очень часто на предприятии возникает необходимость исправить в форме отчета всего пару строк — например, вместо «Директор» поставить «И. О.
Директора». Если отчет создан в Crystal Reports или в Microsoft Reporting Services, придется срочно обращаться к разработчику. А через какое-то время И. О. утвердят в должности директора, и разработчику придется править отчет снова.
Если же отчет изначально создается в документе Word, то пользователь всегда может сам внести в созданный документ необходимые изменения — по-
давляющее большинство пользователей на предприятии умеют работать в Word. Срочно разыскивать разработчика уже не нужно.
У Word есть и другие преимущества. Как правило, при изготовлении отчетов
вWord значения из базы данных подставляются в шаблон отчета, который хранится в базе данных или в файле (с расширением dot). Если формат отчета сложный, с большим количеством специфического оформления (например, объявление на взнос наличными), то намного проще подготовить его шаблон
вWord, чем, к примеру, в Crystal Reports или Reporting Services.
Еще одно программное применение Word — умение работать с разными форматами документов. Эту возможность Word вполне можно использовать для массовой обработки документов.
Приведу случай из практики: в каталоге на диске у нас собралось несколько сотен «разнокалиберных» документов разных пользователей. Часть из них создана в Word разных версий, часть — просто текстовые файлы, некоторые документы в форматах HTML, XML или EML (сообщения электронной почты). На предприятии внедрена система документооборота на основе SharePoint Portal Server и нам необходимо привести все эти документы к еди-
ному формату (Word 2003) и загрузить их на SharePoint Portal Server. Конечно же, без автоматизации в такой ситуации возиться придется очень долго.
Третье программное применение Word — форматирование документов, например: программное применение стилей, поиск и замена участков текста сразу во многих документах, работа со структурой документа и т. п. Обычно такие задачи ставятся в издательствах, например, при подготовке рукописей.
10.2. Введение в программирование в Word. Объектная модель
Общая структура объектов Word выглядит так, как показано на рис. 10.1.
Но пугаться не стоит — большая часть из этих сотен объектов никогда вам не понадобится. На практике для решения большинства программных задач достаточно знать всего лишь пять объектов (с сопутствующими коллекциями):
объект Application;
объект Document (с коллекцией Documents);
объект Selection;
объект Range;
объект Bookmark (с коллекцией Bookmarks).
Далее все эти важные объекты будут подробно описаны. Для каждого объекта вначале будут рассмотрены общие моменты, связанные с ними, например,
Сергей Андреевич Дремук
Эксперт по предмету «Программирование»
Задать вопрос автору статьи
Определение 1
Microsoft Office – одна из самых популярных программных систем, используемых во всем мире.
Трудно найти компьютер, на котором не был бы установлен текстовый редактор Word. Представляя собой систему приложений, тесно связанных друг с другом, MS Office открывает перед своими пользователями самый широкий спектр возможностей.
Мощнейшим средством создания приложений в MS Office стал язык Visual Basic for Application (VBA). Он пришел на смену языкам макропрограммирования, которые обычно включались в приложения.
Определение 2
VBA — высокоэффективное средство разработки приложений, поскольку принадлежит к объектно-ориентированным языкам программирования и обладает простотой макроязыков. Начинающие программировать в офисных пакетах пользователи могут записать свои действия с помощью макрорекордера и создавать макросы без изучения особенностей языка. Такая запись действий, а затем просмотр записанного кода являются простейшим способом для самостоятельного изучения VBA.
Замечание 1
Сейчас с помощью VBA можно легко и быстро создавать различные приложения, используя единую для всех офисных программ среду и язык. Разработчикам приложений очень пригодятся дополнительные возможности и средства VBA для управления пользовательским интерфейсом, оперирования событиями, обработки ошибок и другие средства, которые позволят создавать эффективные приложения с дружеским интерфейсом.
Остановимся на вопросах разработки VBA-приложений для MS Word. С помощью VBA вы можете автоматизировать любые операции, выполняемые в Word интерактивно (то есть вручную): создание документов, добавление в них текста или других графических элементов, форматирование, редактирование, сохранение и т.д. VBA выполнит все эти операции быстрее, точнее и с меньшими затратами, чем человек.
В MS Word создается много документов типа справка, расписка, докладная записка и так далее. Эти документы имеют постоянную и переменную части. Создание таких документов можно упростить, используя язык программирования VBA.
«Создание приложений на языке VBA для MS WORD» 👇
Создание текстового документа
Рассмотрим пример создания справки в MS Word 2007.
Создадим документ Word и сохраним его с именем spravka.docx.
Замечание 2
В случае отсутствия на ленте вкладки Разработчик создайте её с помощью команды — Параметры Word-Личная настройка. В группе Основные параметры работы с Word установите флажок в пункте Показать вкладку Разработчик на ленте.
Создать макрос1 с помощью макрорекордера. Макрос1 создает текст документа «СПРАВКА»:
- выполнить команду Разработка, Макрос, Запись макроса;
- в поле Имя макроса оставить Макрос1. В поле Макрос доступен для: выбрать имя данного документа spravka.docx. Нажать кнопку ОК;
- набрать текст документа «СПРАВКА» с нужными параметрами абзаца и шрифта;
- остановить запись макроса кнопкой Останов в закладке Код-Разработчик.
Проверить работу макроса запустив его на исполнение командой: Разработчик, Макросы, Макрос1, Выполнить.
Текст документа:
Создадим Макрос2 с помощью макрорекордера. Макрос2 выполняет очистку содержимого документа (Выделить все ${Ctrl+A}$, клавиша Delete).
Создадим панель быстрого доступа для spravka.docx с кнопками для запуска макросов.
Для этого необходимо:
- выбрать пункт меню Параметры Word-Настройка;
- в окне Настройка панели быстрого доступа и сочетаний клавиш на вкладке Выбрать команду из выбрать пункт Макросы, а на вкладке Настройка панели быстрого доступа выбрать пункт Для Spravka;
- в том же диалоговом окне команд Макросы выделить команду Макрос1 и добавить в панель быстрого доступа для документа Spravka. Аналогично добавить команду Макрос2;
- изменить надпись или значок на кнопке, назначенной макросу Изменить…, изменить кнопку и отображаемое имя (например, Справка), выбрать новый значок для кнопки, несколько изменить его и назначить макрос (Макрос1) этой кнопке;
- аналогично изменить надпись и кнопку для вызова еще одного макроса (Макрос2), например Очистка документа.
Выполнить макросы, используя кнопки панели быстрого доступа для Spravka.
Сохранить документ на диске в личной папке в файле с именем spravka.doc с типом файла «Документ Word с поддержкой макросов».
Для выхода из Word выберите из меню Выход из Word.
Использование VBA при решении задач в Word
VBA поддерживает набор объектов, соответствующих элементам Word. Используя свойства и методы этих объектов можно автоматизировать все операции в Word. Однако целесообразно автоматизировать выполнение тех операций, для реализации которых нет стандартных средств в Word или их выполнение стандартными средствами является трудоемкой или рутинной работой. Рассмотрим наиболее важные объекты.
Объект Document представляет собой новый или созданный ранее открытый документ.
Основными свойствами объекта Document являются:
- Count — количество открытых в данный момент документов;
- ActiveDocument — активный документ.
Некоторые методы объекта Document и коллекции Documents:
- Open — открывает файл, содержащий существующий документ и автоматически добавляет его в коллекцию;
- Add — добавляет новый пустой документ;
- Save — сохраняет изменения в существующем документе без закрытия;
- Save As (только для объекта) — сохраняет активный вновь созданный документ в текущей папке;
- Item — позволяет получить доступ к элементу коллекции;
- Activate (только для объекта) — активизирует открытый документ;
- PrintOut (только для объекта) — печать документа;
- Close — закрывает документ.
Объекты Character (символ), Word (слово), Sentence (предложение), Paragraph (абзац), Section (раздел документа) задают структуризацию текста документа.
Все эти объекты имеют свойства:
- Count — свойство возвращает количество элементов в коллекции;
- First — свойство возвращает объект, являющийся первым элементом коллекции;
- Last — свойство возвращает объект, являющийся последним элементом.
Коллекции Characters, Words, Sentences имеют единственный метод Item(Index).
Коллекция Paragraphs имеет все вышеперечисленные для данной группы коллекций свойства и множество свойств, значения которых определяют формат абзаца.
Формат абзаца может быть определен и с помощью методов. Приведем некоторые методы коллекции Paragraphs:
- Item — определяет элемент коллекции;
- Add — добавляет новый пустой абзац (параметр метода указывает точку вставки, задается объектом Range);
- InsertParagraph, InsertParagraphAfter, InsertParagraphBefore — осуществляют вставку пустого абзаца вместо текста или после, или перед текстом, задаваемым объектом Selection или Range;
- Reset — удаляет форматирование, сделанное вручную, применяя к абзацу формат, заданный стилем абзаца;
- Indent, Outdent — увеличивают, уменьшают отступ абзаца от края листа;
- TabHangingIndent(Count), TabIndent(Count) — увеличивают (Count>0), уменьшают (Count
- Space1, Space2, Space15 — устанавливают межстрочный интервал (одинарный, двойной, полуторный).
Объекты Range (диапазон) и Selection (выделение) представляют части документа.
Определение 3
Объект Range позволяет задать произвольный диапазон, представляющий собой последовательность индексированных элементов и может быть получен через метод Range или свойство Range других объектов.
Свойствами объекта Range являются:
- Start — начальная символьная позиция диапазона;
- End — конечная символьная позиция диапазона;
- Text — позволяет получить или изменить содержимое объекта.
Определение 4
Объект Selection задает выделенную в документе область (фрагмент). Выделенный в документе фрагмент задает непрерывную область элементов, но не является диапазоном, заданным своим началом и концом. Выделить можно только один фрагмент, поэтому один объект Selection может быть активен в данный момент времени, он может быть получен с помощью свойства Selection или метода Select других объектов.
Ниже приведены некоторые методы присущие объектам Selection и Range:
- Move — метод перемещения точки вставки;
- MoveStart, MoveEND — методы изменения значения свойств Start и End;
- Collapse — сворачивает диапазон к его началу или концу;
- Next — метод получения ссылки на очередной элемент коллекции объектов в диапазоне или выделенном фрагменте;
- Delete — удаляет текст, входящий в диапазон;
- InsertAfter , InsertBefore вставляет текст до или после текста, входящего в диапазон.
- Copy — копирует объект в буфер обмена;
- Cut — перемещает объект в буфер обмена;
- Paste — позволяет поместить содержимое буфера в область, заданную объектом Range или Selection.
Находи статьи и создавай свой список литературы по ГОСТу
Поиск по теме