3.2.1. Модель объектов word
Visual Basic
поддерживает набор объектов, соответствующих
элементам Microsoft Word 2000. Методы и свойства
этих объектов позволяют автоматизировать
все операции в Word.
Модель объектов
Microsoft Word 2000 включает около 180 объектов.
Полную схему модели объектов можно
просмотреть в разделе «Microsoft Word Objects»
справочной системы. Наиболее быстрый
способ получения подробного описания
конкретного объекта — щелкнуть по его
имени на схеме модели объектов. Однако
из всего многообразия объектов Word
практически небольшая их часть наиболее
часто используема.
Модель наиболее
часто используемых объектов и связь
между ними показана на рис. 3.2.
При открытии
Word становиться доступным корневой
объект Application, определяющий само
приложение и все, встроенные в него
объекты, задающие различные компоненты
Word.
Рассмотрим
наиболее важные классы объектов.
Caracters(Range)
Tables(Table)
Range
Words(Range)
Shapes(Shape)
Sentences(Range)
InlineShapes(InlineShape)
Paragraphs(Paragraph)
Fields(Field)
Sections(Section)
Рис. 3.2.Фрагмент
объектной модели Word
3.2.2.Объект Appication
Объект Appication – само приложение MS
WORD в целом. Он создается при запуске
Word. Через свойства и методы этого объекта
можно получить доступ к глобальным
параметрам приложения, управлять
внешним видом окна Word и
обращаться к объектам, занимающим более
низкие уровни в модели объектов Word.
Объект Application имеет более сотни элементов:
свойств, методов и событий.
Как уже говорилось
выше, свойства любого объекта делятся
на две группы: свойства – участники
(объекты) и терминальные свойства
(обычные переменные VBA).
Свойство- участник, представляющий
собой вложенный объект, возвращает
ссылку на данный объект. В объекте
Application более 30 коллекций и простых
объектов. Среди них наибольший интерес
представляют:
Documents(Document)
– коллекция документов Word, содержащая
все открытые документы;
Templates(Template)
– коллекция шаблонов Word, содержащая
все открытые шаблоны;
Windows(Window)
– коллекция, содержащая все открытые
окна;
Selection
– объект, задающий выделенную область;
Options
– объект, позволяющий программным путем
установить параметры приложения и
документа.
Среди многообразия методов объекта
Application целесообразно выделить те, которые
позволяют выполнять операции над
приложением в целом: Activate – активизация
приложения, Quit – выход из приложения и
осуществлять запуск макросов:
Run
– запуск макроса и OnTime
– запуск макроса в заданное время.
3.2.3. Объект Document
Объект Document представляет собой
новый или созданный ранее открытый
документ.
При запуске Word создается коллекция
открытых документов Documents, содержащая
как минимум один объект Document. Создавая
новый или открывая ранее созданный
файл, в коллекцию добавляется объект
Document. Получить доступ к нужному
объекту Document коллекции можно
выражением:
Documents (index),
Где index – имя файла или номер документа
в коллекции объектов Documents.
Через свойства и методы объекта Document и
коллекции Documents можно создавать,
открывать, активизировать и закрывать
документы.
Рассмотрим на примерах некоторые
свойства методы, позволяющие выполнять
эти операции над документами.
К свойствам объекта Document относятся:
Count – количество открытых в данный
момент документов;
ActiveDocument – активный документ.
Пример 3.3:
‘процедура выводит в окно отладки Public Sub pr33() Dim kol As Byte Kol = Documents.Count If kol >= 1 Then For i = 1 To kol: Debug.Print Else MsgBox «Нет End If End Sub |
Пример 3.4:
‘процедура выводит в диалоговое окно Public Sub pr34() If Documents.Count >= 1 Then MsgBox ActiveDocument.Name Else MsgBox «Нет End If End Sub |
Основные методы объекта Document и
коллекции Documents:
Open – открывает файл, содержащий
существующий документ и автоматически
добавляет его в коллекцию;
Add – добавляет новый пустой
документ;
Save – сохраняет изменения в существующем
документе без закрытия;
SaveAs (только для объекта) – сохраняет
активный вновь созданный документ в
текущей папке;
Item – позволяет получить доступ к элементу
коллекции;
Activate (только для объекта) –
активизирует открытый документ;
PrintOut (только для объекта) – печать
документа;
Close – закрывает документ.
Пример 3.5
‘процедура, используя метод Open, ‘представляющий ‘его имя и закрывает Public sub pr35() Set mydoc = _ MsgBox Mydoc.Close End Sub |
Пример 3.6:
‘Процедура перебирает коллекцию ‘Metvba.doc. Если он уже Public sub pr36() For Each mydoc In Documents If InStr(1, mydoc.Activate w = True Exit For Else w = False End If Next mydoc If w = False Then Documents.Open End If End Sub |
Пример 3.7:
‘процедура после вывода имен открытых Public Sub pr37() If Documents.Count >= 1 Then For i = 1 To Documents.Count: Debug.Print Documents.Close End If End Sub |
Пример 3.8:
‘Процедура закрывает документ Public pr38() Documents(“Metvba.doc End Sub |
Документ Word организован довольно сложно.
Текст документа может быть дополнен
таблицами, рисунками, документ может
содержать колонтитулы, сноски, ссылки
и т.д. Свойства-участники объекта Document
позволяют получить доступ к 44 вложенным
объектам, большинство из которых являются
коллекциями. Рассмотрим некоторые из
них, объединив объекты в группы.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
Название объекта
Документ без рисунков, схем, фотографий, диаграмм скучен и неинтересен. Если в документе один рисунок, то пусть стоит в гордом одиночестве. А если рисунков несколько и нужны порядковые номера и названия рисунков? А если по тексту необходимо сказать: «смотри на рисунок 10»? К сожалению, чаще всего номера рисунков, таблиц, диаграмм проставляются вручную, и ошибки неизбежны. А представьте ситуацию, когда вам приходиться делать объединение нескольких документов! Так что научится правильно вставлять название объекта просто необходимо.
По окончании урока вы сможете:
- Дать названия объектам
- Создать новый стиль абзаца «Название…»
Скачайте документ тут. Откройте документ. Внимание! Все рисунки и объекты взяты из открытых источников.
1. Вставка «Название объекта»
1.1. Для таблиц
Шаг 1. Щёлкаем ЛМ перед названием таблицы «Виды нормативных актов»:
Шаг 2. Открываем диалоговое окно «Название» (Лента Ссылки → группа команд Названия → кнопка Вставить название):
Появится диалоговое окно «Название».
Шаг 3. Нажимаем кнопку выпадающего меню на поле «подпись»:
Шаг 4. Выбираем из впадающего меню название Таблица:
Конструкция названия таблицы:
Щёлкаем ОК. Получаем такую картину:
На уроке 13 Встроенные стили и уроке 15 Лишние стили текста мы говорили, в каких ситуациях появляются новые стили текста в области задач Стили.
Кстати, пока мы не ушли в другое место документа и курсор стоит после номера таблицы, поставьте сразу точку и пробел:Представьте, что вы забыли поставить точку и пробел после номера таблицы. Вспомнили и ‒ начали по всему документу искать названия объектов, прицеливаться мышкой в нужное место, нервничать, промахиваться…
Теперь поговорим о стиле текста «Название объекта». Как видите, по умолчанию характеристика стиля не соответствует принятым нормам оформления документа:Можно и дальше продолжать вставлять называния объектов, а потом разом поменять характеристику стиля, но не стоит откладывать на завтра то, что нужно сделать немедленно.
Шаг 5. Выделяем Абзац «Таблица 1. Виды нормативных актов» (см. Урок 2).
На ленте Главная устанавливаем:
- Начертание шрифта полужирное
- Начертание курсивное отменяем (просто щёлкаем по кнопке «К» ЛМ)
- Размер шрифта – 12 пт
- цвет шрифты — чёрный
На Панели быстрого доступа (см. Урок18 Панель быстрого доступа и Урок 19 Команды на Панели быстрого доступа) устанавливаем:
- Интервал после абзаца – 6 пт.
Шаг 6. Перемещаем курсор в область задач Стили на название стиля «Название объекта». Когда на названии стиля появится кнопка выпадающего меню, нажимаем эту кнопку. Из выпадающего меню выбираем команду «Обновить «Название объекта» в соответствии с выделенным фрагментом»:
Для других таблиц я расписываю алгоритм:
- Щёлкаем ЛМ перед названием таблицы «ХХХХХХХ»:
- Вызываем диалоговое окно «Название» (Лента Ссылки → группа команд Названия → кнопка Вставить название).
Теперь в диалоговом окне Название в поле «Название» постоянное название Таблица с соответствующим номером: - Щёлкаем ОК.
- Ставим точку и пробел после номера таблицы.
1.1. Для рисунков
Шаг 1. Щёлкаем ЛМ перед названием рисунка «Инструктаж»:
Шаг 2. Открываем диалоговое окно «Название» (Лента Ссылки → группа команд Названия → кнопка Вставить название):
Появится диалоговое окно Название.
Шаг 3. Нажимаем кнопку выпадающего меню на поле «подпись»:
Шаг 4. Выбираем из впадающего меню название Рисунок:
Конструкция названия рисунка:
Щёлкаем ОК. Получаем такую картину:
И пока мы не ушли в другое место документа и курсор стоит после номера рисунка, поставьте сразу точку и пробел:
Так как мы уже поправили стиль текста Название объекта, то больше ничего делать не надо.
Для других рисунков я расписываю алгоритм:
- Щёлкаем ЛМ перед названием рисунка «ХХХХХХХ»:
- Вызываем диалоговое окно «Название» (Лента Ссылки → группа команд Названия → кнопка Вставить название). Теперь в диалоговом окне Название в поле «Название» постоянное название Рисунок с соответствующим номером:
- Щёлкаем ОК.
- Ставим точку и пробел после номера рисунка.
Вставим по всему документу название объекта для каждой таблицы и каждого рисунка по этому алгоритму.
2. Создание нового стиля абзаца «Название рисунка» и «Название таблицы»
Согласно правилам оформления документа название таблицы должно быть выравнено по левому краю, а название рисунка по правому краю. Кстати в некоторых организациях требуют выравнивать название таблицы по правому краю. А ещё встречаются документы, в которых необходимо составить перечень таблиц и перечень рисунков, также перечень диаграмм, схем и так далее). Подготовимся к этой «приятной» неожиданности.
Перейдите к первой таблице (в принципе это необязательно, но лучше всегда начинать с начала).
Шаг 1. Выделяем название первой таблицы (для этого достаточно щёлкнуть ЛМ по полосе выделения, когда курсор повернётся к тексту «лицом» см. Урок 2):
Мы уже создавали новый стиль (см. Урок 9 Создание собственного стиля…). Тогда мы использовали кнопку, которая находится внизу области задач Стили:
Но сейчас мы пойдём другим путём, но результат будет тот же.
Шаг 2. Вызываем диалоговое окно «Создание стиля» (Лента Главная → Группа команд Стили → кнопка выпадающего меню → команда «Создать стиль» из выпадающего меню):
Как вы будете создавать стиль ‒ дело ваше, но я могу назвать ещё по меньшей мере 4 способа.
В результате мы увидим окно:
Шаг 3. Вводим в поле Имя название нового стиля «Название таблицы»:
В области задач Стили появился новый стиль с именем «Название таблицы»:
Пройдёмся по документу, попутно присваивая каждому названию таблицы стиль «Название таблицы».
А вот названия рисунков, как правило, должны быть выравнены по центру.
Шаг 4. Выделяем (см. Урок 2) название рисунка 1 и выравниваем его по центру страницы, используя ленту Главная → группу команд Абзац → кнопка Выравнивание по центру:
Шаг 5. Вызываем диалоговое окно «Создание стиля» (Лента Главная → Группа команд Стили → кнопка выпадающего меню → команда «Создать стиль» из выпадающего меню):
Шаг 6. Вводим в поле Имя название нового стиля «Название рисунка»:
Пройдёмся по документу, попутно присваивая каждому названию рисунка стиль «Название рисунка».
Вопрос: почему я предлагаю такие имена для стилей текста «Название …»? Просто в этом случае стили располагаются рядом в списке стилей, и стили удобно находить при работе.
Понять и запомнить! | Называйте новые стили так, чтобы они располагались в определённой логической последовательности. |
Теперь вы сможете:
- Дать названия объектам
- Создать новый стиль абзаца «Название…»
Работа с документами и класс Document
Вспомним, что мы уже знаем о документах Word. Когда открывается приложение, создается коллекция документов Documents, содержащая открытые документы. Если приложение Word создается в момент открытия документа Word, (заметим, что объект Word.Application может быть создан и в программном проекте другого приложения, например, Excel), то в начальный момент коллекция содержит минимум один новый или ранее существовавший документ. Программно новый документ добавляется в коллекцию методом Add, а уже существующий — методом Open объекта Documents. Чтобы добраться до нужного документа в коллекции, достаточно указать его индекс — имя файла, хранящего документ, — или его порядковый номер в коллекции. Для той же цели можно использовать и метод Item, но обычно он опускается. Метод Save позволяет сохранить документ, а метод Close, сохраняя документ в файле, закрывает его и удаляет из коллекции.
При применении метода Open обязательно указывать имя, а точнее путь к открываемому файлу. Однако задание конкретного пути всегда чревато неприятностями, поскольку при любом переносе системы местоположение файла может измениться. В одной из предыдущих процедур этой лекции WorkWithSearch я демонстрировал возможность использования свойства Path для нахождения пути к документу. Часто предпочтительнее предоставить пользователю возможность выбирать открываемый файл, хранящий документ. Для этого, конечно, можно использовать объект Dialog, при вызове методов которого открывается соответствующее диалоговое окно.
Вот еще один пример использования уже знакомого нам объекта Dialog FileOpen:
Public Sub WorkWithDialogs() Dim dlg As Dialog 'Открытие документа в диалоге с пользователем 'Метод Show ведет диалог и открывает документ Dialogs(wdDialogFileOpen). Show 'Метод Display ведет диалог, не открывая документа, 'но позволяя получить имя файла. Set dlg = Dialogs (wdDialogFileOpen) If dlg. Display = -1 Then 'нажата кнопка Open Documents.Open FileName:=dlg.Name End If End Sub
Листинг
1.26.
Теперь подробнее рассмотрим свойства и методы документа — объекта класса Document. Это основной объект, свойства, события и методы которого следует знать основательно. Объект Document не менее сложен, чем объект Application.
Коллекции объекта Document
Рассмотрим список коллекций, входящих в состав объекта Document:
- Bookmarks
- Characters (Range)
- CommandBars
- Comments
- DocumentProperties
- Endnotes
- Fields
- Footnotes
- FormFields
- Frames
- Hyperlinks
- Indexes
-
InlineShapes
- HorizontalLineFormat
- ListParagraphs
-
Lists
- ListParagraphs
- Range
-
ListTemplates
- ListLevels
- Font
- Paragraphs
- ProofreadingErrors (Range)
- Revisions
- ReadabilityStatistics
- Scripts
- Sections
- Sentences (Range)
- Shapes
- StoryRanges (Range
- Styles
- Subdocuments
- Tables
- TablesOfAuthoritiesCategories (TableOfAuthoritiesCategory)
- TablesOfAuthorities (TableOfAuthorities)
- TablesOfContents (TableOfContents)
- TablesOfFigures (TableOfFigures)
- Variables
- Versions
- Windows
- Words (Range)
Среди объектов, вложенных в объект Document на первом уровне иерархии, коллекции составляют явное большинство — их 36. Каждая коллекция содержит элементы одного класса. Как правило, имя класса коллекции строится как множественное число (по правилам английского языка) от имени класса элемента коллекции. Например, коллекция Documents содержит объекты класса Document, а коллекция Paragraphs содержит объекты класса Paragraph. В тех случаях, когда это правило не выполняется, в скобках указано имя класса для объектов, входящих в коллекцию. Заметьте, например, что коллекции предложений, слов и символов документа Word состоят из объектов класса Range.
Для некоторых из объектов этого списка указаны и встроенные в них объекты, лежащие на следующем уровне иерархии. В этих случаях курсивом выделены те объекты, которые не являются коллекциями.
Простые объекты, вложенные в объект Document
Объектов, вложенных на верхнем уровне иерархии в объект Document, существующих в одном экземпляре и не имеющих соответственно коллекций, сравнительно немного. Вот их список:
-
Email
- EmailAuthor
- Envelope
- Frameset
- HTMLProject
- LetterContent
-
MailMerge
- MailMergeDataSource
- MailMergeFields
-
PageSetup
- LineNumbering
- TextColumns
- Range
- RoutingSlip
- VBProject
- WebOptions
В Office 2000 у объекта Document появились три новых объекта в сравнении с предыдущей версией. Это объекты: Email, Frameset и WebOptions.
Итак, только на верхнем уровне в объект Document встроено около 50 объектов, определяющих его свойства. Большинство из этих объектов устроены достаточно сложно, — почти все содержат коллекции внутри себя. Попробуем упорядочить эту «тьму» объектов.
Классы, задающие структуризацию текста документа
Текст — это основа большинства документов. Его можно структурировать, оперируя различными единицами при решении тех или иных задач преобразования текста. Минимальной единицей текста является символ. Другие естественные единицы — это слова, предложения, абзацы. Более крупными частями текста являются страницы, параграфы и главы. Важно уметь оперировать с последовательностями таких единиц. Какие же классы объектов предоставляет Word для этой цели?
Классы Characters, Words, Statements, Paragraphs позволяют работать с последовательностями (коллекциями) символов, слов, предложений, абзацев. Может показаться удивительным, но классов, соответствующих таким элементам, как символ, слово или предложение, нет. Элементом коллекций Characters, Words и Statements является объект класса Range. Это один из самых важных объектов, необходимых для понимания работы с текстами. Объект Range позволяет работать как с одним символом, так и с последовательностью символов. Документы, поддокументы, абзацы, разделы — все они имеют метод или свойство Range, возвращающее объект Range, представляющий область, связанную с объектом, вызвавшим метод (свойство) Range. Эту область можно рассматривать как интервал, задаваемый первым и последним символом текста данной области. Поэтому работа с текстом, так или иначе, ведется через методы и свойства объекта Range.
Чуть позже мы продолжим знакомство с классами Characters, Words, Statements, Paragraphs и Range.
Документ и его части
До сих пор мы говорили только о тексте как основной части документа Word. Но документ имеет сложную структуру, и в нем можно выделить разные по назначению части. Каждой части документа, каждому понятию, определяющему эту часть, соответствует свой класс объектов, а чаще всего два класса, задающие объекты и их коллекцию. Рассмотрим основные части документа.
Разделы и поддокументы
Сейчас мы обсудим более подробно две коллекции Sections и SubDocuments, задающие разделы документа и поддокументы, входящие в состав основного документа. Почти в каждом текстовом документе можно встретить символы, слова, предложения и абзацы. Что же касается более крупных единиц текста, то в разных документах они называются по-разному. Чаще всего, приходится встречаться со страницами и листами документа, но используются и такие термины как параграфы, главы, части, разделы документа. В объектной модели Word, к сожалению, нет таких объектов как Page и Pages, соответствующих таким естественным единицам текстового документа как страницы документа и их коллекции. В документе Word следующей крупной единицей после абзаца является раздел — объект класса Section. Все разделы одного документа составляют коллекцию Sections.
Что же такое раздел, как и для чего он создается? Раздел в документе всегда можно создать руками, для чего достаточно вставить символ разрыва документа — Section break, вызвав пункт Break из меню Insert. Символ разрыва может быть разного типа, задавая следующую страницу, четную или нечетную страницу, столбец и другие виды раздела. Таким образом, можно руками разбить документ на страницы, вставляя подходящие символы разрыва в нужных местах. В этом случае разделы будут выступать в роли страниц документа. Иногда разделы создаются автоматически, например, при представлении некоторой части документа в виде нескольких столбцов. Часть документа, представленная в виде нескольких столбцов, представляет отдельный раздел.
При программной работе разделы можно создавать двояко, используя метод InsertBreak, которым обладают объекты Range и Selection, или вызывая метод Add коллекции Sections. Метод Add (Range, Start) имеет два параметра:
- Range задает область, начинающую новый раздел, или, что тоже, область, перед началом которой будет вставлен символ разрыва.
- Start задает тип символа разрыва.
Заметьте, в методе InsertBreak указывается только второй параметр, поскольку новый раздел начинается с объекта Range (Selection), вызвавшего метод.
Рассмотрим пример, в котором документ с именем DocThree, программно разбивается на разделы. Наше разбиение гарантирует, что соответствующие главы и параграфы документа находятся в отдельных разделах, что облегчает дальнейшую работу с ними. Вот как выглядит процедура, решающая эту задачу:
Public Sub WorkWithSections() 'В документе DocThree создаются разделы документа 'Вначале документ не имеет разделов Dim sect As Section Dim myr As Range Documents("Docthree").Activate With ActiveDocument Debug.Print "В документе разделов - ", .Sections.Count 'Выделение последнего раздела .Sections(.Sections.Count).Range.Select Debug.Print "Абзацев в разделе - ", Selection.Paragraphs.Count Debug.Print "Предложений в разделе - ", Selection.Sentences.Count Debug.Print "Слов в разделе - ", Selection.Words.Count Debug.Print "Символов в разделе - ", Selection.Characters.Count 'Добавление разделов Set myr = .Paragraphs(11).Range myr.Select myr.InsertBreak wdSectionBreakNextPage Set myr = .Paragraphs(18).Range .Sections.Add myr, wdSectionEvenPage Set myr = .Paragraphs(29).Range .Sections.Add myr .Sections.Add 'Повторная печать после создания новых разделов Debug.Print "В документе разделов - ", .Sections.Count 'Выделение первого раздела Set sect = .Sections(1) Debug.Print "Абзацев в разделе - ", sect.Range.Paragraphs.Count Debug.Print "Предложений в разделе - ", sect.Range.Sentences.Count Debug.Print "Слов в разделе - ", sect.Range.Words.Count Debug.Print "Символов в разделе - ", sect.Range.Characters.Count End With End Sub
Листинг
1.27.
В этой процедуре показано, как происходит выделение раздела, подсчет некоторых характеристик раздела, например, подсчет числа абзацев, предложений и символов раздела. Показано, как создаются разделы документа, используя как метод InsertBreak так и метод Add коллекции Sections. Метод Add вызывается как с явно заданными параметрами, так и параметрами, задаваемыми по умолчанию.
Перейдем теперь к рассмотрению понятия поддокумент и способов работы с объектами, задающими поддокументы. Есть некоторый разумный предел размера одного документа. Если в документе больше 10-20 страниц, работать с ним становится неудобно. В этом случае в нем целесообразно выделить главный документ и поддокументы. Главный документ и поддокументы являются, по сути, документами, связанными ссылками, с каждым из которых можно работать независимо. Вот пример выделения поддокумента из главного документа:
Public Sub WorkWithSubDoc() 'Работа с поддокументами Dim DocPath As String Dim myr As Range 'Открываем и активизируем документ DocThree DocPath = Documents("DocOne").Path Documents.Open (DocPath & "Docthree") Documents("Docthree").Activate With ActiveDocument Debug.Print "Число поддокументов =", .Subdocuments.Count If .Subdocuments.Count = 0 Then If .Sections.Count = 1 Then 'Выделение разделов WorkWithSections End If 'Выделение поддокумента, начиная с третьего раздела и до последнего Set myr = .Range(Start:=.Sections(3).Range.Start, _ End:=.Sections(.Sections.Count).Range.End) .Subdocuments.AddFromRange myr Debug.Print "Теперь число поддокументов =", .Subdocuments.Count End If End With End Sub
Листинг
1.28.
Наш документ DocThree вначале не имел поддокументов. Этот документ предварительно разбивается на разделы, если это еще не было сделано, а затем в нем выделяется поддокумент, начиная с третьего раздела и кончая последним разделом документа. Метод Add FromRange класса SubDocuments создает поддокумент, выделяя из главного документа область, заданную параметром Range.
Заметьте, область, задаваемая параметром Range, должна начинаться с заголовка, имеющего один из стандартных стилей Heading. При сохранении документа, поддокумент удаляется из документа и сохраняется в отдельном файле. Имя файла строится автоматически, используя текст заголовка, начинающего поддокумент. В главном документе остается ссылка на поддокумент. При желании его всегда можно слить с главным, но с ним можно работать и как с независимым документом. Вот как выглядит наш главный документ после того, как в нем выделен поддокумент:
Рис.
1.9.
Главный документ с выделенным поддокументом
5.1. Основные объекты Word
Объект Word.Application
Дополнительно ко всем возможностям программирования на VBA, рассмотренным в части I, можно добавить возможности вывода всех результатов вычислений, преобразований, сообщений в документ Word, с возможностью дальнейшего отправления на печать. Для этого необходимо рассмотреть основные объекты приложения Word.
Ключевым в объектной модели Word является объект Application, так как он содержит все остальные объекты Word. Его элементами на разных уровнях иерархии являются около 180 объектов. Сам корневой объект Application имеет более сотни элементов: свойств, методов и событий.
Свойства объекта Word.Application
Свойства любого объекта делятся на две группы: свойства-участники (объекты) и терминальные свойства (обычные переменные VBA).
Единую систему организации панелей меню и инструментальных кнопок обеспечивает объект CommandBars, справок – Assistant, поиска – FileSearch.
Центральными объектами Word являются коллекции Documents и Templates, точнее составляющие их элементы, сам документ и шаблоны.
Рассмотрим объекты второго плана.
Объект AutoCorrect поддерживает работу по автоматической коррекции набираемых текстов. Его возможности эквивалентны команде Автозамена меню Сервис.
Объект Browser позволяет перемещать точку вставки, указывающую на объекты в документе.
Коллекция объектов Dialogs представляет совокупность диалоговых окон, встроенных в Word. Добавлять новые или удалять элементы этой коллекции программным путем нельзя. Но соответствующие окна можно открыть и показать на экране дисплея и тем самым организовать диалог пользователем по теме, заданной соответствующим окном.
Три объекта, связанные с проверкой грамматики и орфографии: Languages, Dictionaries, SpellingSuggestions, – позволяют установить нужный язык, выбрать словарь, в том числе пользовательские словари, а также работать со списком слов, предлагаемых для исправления при обнаружении ошибки правописания. Команды Правописание и Язык меню Сервис предоставляют аналогичные, функциональные возможности при работе с документом вручную.
С помощью объекта Options можно программным путем установить различные опции приложения и документа аналогично тому, как если бы вы выбрали команду Параметры в меню Сервис.
Работа с документами и класс Document
Когда открывается приложение, создается коллекция документов Documents, содержащая все открытые документы. В начальный момент коллекция содержит минимум один новый или ранее существовавший документ. Новый документ добавляется методом Add, а уже существующий – методом Open объекта Documents. Чтобы добраться до нужного документа, достаточно указать его индекс – имя файла, хранящего документ, или его порядковый номер в коллекции. Для той же цели можно использовать и метод Item, но обычно он опускается. Метод Save позволяет сохранить документ, а метод Close, сохраняя документ в файле, закрывает его и удаляет из коллекции.
Глобальное свойство Dialogs возвращает коллекцию диалоговых окон. Константа wdDialogFileOpen задает конкретное диалоговое окно – объект класса Dialog.
Классы, задающие структуризацию текста документа
Текст – это основа большинства документов. Его можно структурировать, оперируя различными единицами при решении тех или иных задач преобразования. Минимальной единицей текста обычно является символ. Кроме этого, существуют следующие единицы: слова, предложения, абзацы, а также более крупные образования: страницы, параграфы, главы.
Классы Characters, Words, Statements, Paragraphs, Sections позволяют работать с последовательностями (коллекциями) символов, слов, предложений, абзацев и разделов. Самой крупной единицей после абзаца выступает раздел. Элементом коллекций Characters, Words и Statements является объект класса Range. Объект Range позволяет работать как с одним элементом, так и с произвольной последовательностью элементов. Документы, поддокументы, абзацы, разделы – все они имеют метод или свойство Range, возвращающее интервал, связанный с объектом. Поэтому работа с текстом так или иначе ведется через методы и свойства объекта Range.
События объекта Document
Объект Document может реагировать на три события, возникающие в результате действий пользователя.
Таблица 16
События объекта Document
Документ и его части
Рассмотрим основные классы, определяющие структуру документа.
1. Subdocuments (Subdocument) – коллекция и сам поддокумент. Есть некоторый разумный предел размера одного документа. Если в документе больше 10–20 страниц, работать с ним становится неудобно. В этом случае в нем выделяют главный документ и поддокументы. Главный документ в этом случае имеет коллекцию поддокументов, каждый из них является, по сути, документом, с которым можно работать независимо.
Метод AddFromRange класса SubDocuments создает поддокумент, выделяя из главного документа область, заданную параметром Range.
2. Tables (Table), TablesOfAuthoritiesCategories (T.O.A.C), TablesOfAuthorities (TableOfAuthorities), TablesOfContents (TablesOfContent), TablesOfFigures (TablesOfFigure). Класс Table определяет «обычные» таблицы с произвольным количеством строк и столбцов и произвольным заполнением полей. Остальные классы задают таблицы специального вида.
3. Shapes(Shape), InlineShapes(InlineShape) – эти две коллекции с их элементами позволяют добавлять в документ рисунки, но не только их. ActiveX– и OLE-объекты также являются элементами этих коллекций. Элементы этих двух коллекций отличаются тем, как они привязаны к документу: первые могут свободно перемещаться, вторые жестко привязаны к заданной области документа.
4. Lists(List), ListParagraphs(ListParagraph), listTemplates (ListTemplate) – списки удобно вводить в документ, когда имеешь дело с перечислением. Списки можно оформлять в соответствии с шаблоном. Существуют две группы шаблонов: нумерованные списки и списки-бюллетени. Коллекция ListTemplates содержит шаблоны оформления списков, а класс ListTemplate описывает конкретный шаблон. Шаблон применяется к списку абзацев и придает ему структуру, заданную шаблоном. Коллекция Lists содержит те списки документа (списки абзацев), что оформлены как нумерованные списки или списки-бюллетени. Коллекция ListParagraphs представляет список абзацев всех списков документа. Свойством ListParagraphs, которое возвращает объект соответствующего класса, обладает не только документ, но и объекты List и Range. Так что при наличии списка – объекта List можно выделить список абзацев. Чаще приходится выполнять обратную операцию – применять к списку абзацев один из возможных шаблонов, придав ему «настоящую» структуру списка. Тогда используют объект ListFormat.
5. Comments(Comment), Bookmarks(Bookmark), FootNotes (FootNote), EndNotes(EndNote), Fields(Field) – эти коллекции и их элементы отражают независимые, но близкие по духу понятия. Это части документа, косвенно связанные с ним. При нормальном просмотре документа они могут быть и не видны.
• Коллекция comments и класс comment задают комментарии. Комментарии, как известно, вводятся для пояснения тех или иных терминов или понятий документа. Формально они приписываются некоторой области – объекту range.
• Большой документ, к отдельным частям которого приходится часто обращаться, стоит снабдить закладками. Коллекция bookmarks задает все закладки данного документа.
• Еще один способ комментирования – сноски. Они могут быть двух видов: подстраничные (внизу страницы) и концевые (в конце документа). Первые собраны в коллекцию footnotes, вторые – endnotes.
6. Fields (Field) – эта коллекция позволяет работать с полями документа. Одна из особенностей полей состоит в том, что их значения обновляются автоматически в зависимости от изменившихся внешних условий или контекста.
7. Story Ranges (Range) – эта коллекция представляет совокупность частей документа, называемых фрагментами (Story). Количество различных фрагментов документа фиксировано. Нельзя добавлять элементы в эту коллекцию обычным способом, используя метод Add. Фрагменты появляются в коллекции, когда создается соответствующая часть документа.
Фрагменты имеют тип, задаваемый константами из перечисления wdStoryType. Главный фрагмент – текст документа, тип которого задается константой wdMainTextStory. Комментарии, ссылки, колонтитулы составляют фрагменты других типов, т. е. сам фрагмент является объектом Range. Так что благодаря фрагментам можно, например, работать с коллекцией комментариев как с единой областью.
8. Variables (Variable) – с документом можно связать коллекцию переменных типа Variant. Это важная для программистов коллекция, так как время жизни переменных, в нее входящих, совпадает со временем жизни документа. Тем самым появляется возможность сохранять информацию о работе той или иной процедуры между сеансами. Например, можно иметь счетчики, подсчитывающие число вызовов макроса, и в зависимости от этого по-разному определять его дальнейшую работу.
Объекты Range и Selection
Объект Document имеет метод Range, возвращающий объект Range, и метод Select, создающий объект Selection. Метод Range – это функция, возвращающая как результат объект Range; метод Select – это процедура без параметров, которая создает объект Selection в качестве побочного эффекта. Объект Range имеет метод Select, превращающий область объекта Range в выделенную. Тем самым метод Select определяет новый объект Selection. Симметрично, объект Selection имеет свойство Range, возвращающее объект Range, соответствующий выделенной области.
Большинство ранее описанных частей документа являются и частями (свойствами) объектов Range и Selection.
Объект Range напоминает матрешку: в каждую область вложена область поменьше. Вот пример корректного (хоть и не самого эффективного) задания объекта Range:
ActiveDocument.Range.Sections(1).Range.Paragraphs(l).Range.Sentences(1). Words(1).Characters(1)
Работа с текстом
Объекты Range и Selection позволяют выполнять основные операции над текстом: «выделить», «добавить», «заменить», «удалить». У наших объектов большой набор методов, позволяющих реализовать эти операции. Все рассматриваемые здесь методы принадлежат обоим объектам, если не сделана специальная оговорка.
Выделение
Выделить некоторую часть текста по существу означает определить объект Range или Selection. Объекты задают некоторую область в тексте документа, а их свойства Start и End позволяют установить начало и конец этой области. Меняя значения свойства, можно задать нужную область выделения.
Move является основным методом перемещения точки вставки. Остальные методы этой группы – в той или иной степени его модификации. Метод Move(Unit, Count) сжимает область в точку, стягивая ее в начало или конец, а затем перемещает точку вставки. Параметр Unit определяет единицы перемещения, a Count – количество этих единиц (по умолчанию 1). Знак переменной Count задает направление стягивания и перемещения. Положительные значения этого параметра задают стягивание к концу и перемещение вперед, отрицательные – стягивание в начало и перемещение назад. Чистое стягивание без перемещения точки вставки задается как перемещение на одну единицу. Метод возвращает количество единиц, на которое фактически произошло перемещение, или 0, если оно не осуществлено. Параметр Unit принимает значения wdCharacter (по умолчанию), wdWord, wdSentence, wdParagraph, wdSection, wdStory, wdCell, wdColumn, wdRow и wdTable.
Методы перемещения на сам текст не влияют – лишь изменяют область, заданную объектами Range и Selection. Поэтому эти методы применимы только к переменным типа Range, но не к фиксированным областям. Например, запись
ActiveDocument.Paragraphs(l).Range.Move
не имеет эффекта, поскольку область первого абзаца – вещь неизменяемая. Метод Move стягивает область в точку, которая и перемещается, поэтому после его выполнения область исчезает, остается только точка вставки. Методы MoveStart и MoveEnd перемещают начальную или конечную точку области, обычно тем самым расширяя область.
Удаление текста
Метод Delete позволяет удалить текст. Вызванный без параметров, он удаляет вызывающий его объект Range или Selection. Если он применен в форме Delete(Unit,Count), удаляется часть текста в указанной области. Параметр Unit задает единицы, но при удалении возможны только два значения: wdWord и wdCharacter. Параметр Count задает количество удаляемых единиц. Если область стянута в точку, удаляются символы перед точкой вставки или после нее в зависимости от знака параметра Count.
Вставка текста
Группа методов Insert объектов Range и Selection позволяет осуществлять вставки в документ. Для вставки текста используются методы InsertBefore(Text) и InsertAfter(Text). Параметр text типа string задает текст, вставляемый до или после области, заданной объектами range или selection. После вставки текста область автоматически расширяется, включая в себя добавляемый текст.
Свойство Text позволяет заменять текст в выделенной области, поэтому нет нужды вызывать метод Insert(Text). Методы InsertBefore и InsertAfter безопасны, так как текст добавляется, не изменяя содержимого области. Совсем иное дело – методы вставки, которые далеко не безопасны. При вставке внутрь области, например при использовании метода InsertSymbol или InsertParagraph, заменяется содержимое области.
Работа с буфером
Метод Сору, не имеющий параметров, копирует объект (содержимое области) в буфер. Метод cut, действуя аналогично, должен бы заодно и удалять объект. Но сам объект не удаляется – только стягивается в точку, так что над ним возможны дальнейшие операции.
Иногда в буфер копируют не текст, а его формат. Этим занимается метод CopyFormat, копирующий формат по первому символу объекта selection. Если этот символ – метка абзаца, копируется формат абзаца. Методом CopyFormat обладает только объект selection.
Метод Paste позволяет поместить («приклеить») содержимое буфера в область, заданную объектами Range и Selection. Эта операция опасна, так как происходит замена, а не добавление текста. Поэтому обычно метод Paste применяется к объектам Range и Selection, предварительно стянутым в точку вставки. Метод PasteFormat применяет форматирование, хранящееся в буфере, к объекту Selection.
Например, создадим макрос, который вставляет список «урок, экзамен, сдал!», копирует его и помещает еще раз на лист.
Sub Макрос1()
With Selection.ParagraphFormat
Selection.TypeText Text:=»Работа с текстом:»
Selection.TypeParagraph
With
ListGalleries(wdBulletGallery).ListTemplates(1)._ListLevels(1)
End With
End With
ListGalleries(wdBulletGallery).ListTemplates(1).Name = «»
Selection.Range.ListFormat.ApplyListTemplate
ListTemplate:=ListGalleries(wdBulletGallery).ListTemplates(1), ContinuePreviousList:=False, ApplyTo:= _wdListApplyToWholeList, DefaultListBehavior:=wdWord10ListBehavior
Selection.TypeText Text:=»урок»
Selection.TypeParagraph
Selection.TypeText Text:=»экзамен»
Selection.TypeParagraph
Selection.TypeText Text:=»сдал»
Selection.TypeParagraph
Selection.Range.ListFormat.RemoveNumbers
NumberType:=wdNumberParagraph
Selection.TypeParagraph
Selection.Font.Bold = wdToggle
Selection.Font.Italic = wdToggle
Selection.TypeText Text:=»Работа завершена!»
Selection.WholeStory
Selection.Copy
Selection.PasteAndFormat (wdPasteDefault)
Selection.PasteAndFormat (wdPasteDefault)
End Sub
Данный текст является ознакомительным фрагментом.
Читайте также
Объекты OS/400 и системные объекты MI
Объекты OS/400 и системные объекты MI
Несколько типов объектов имеются и в OS/400, и в MI. Типы объектов OS/400 перечислены в таблице 5.1. Для сравнения, в таблице 5.2 приведены системные объекты MI. Помните, что в каждой новой версии AS/400 добавляются новые функции и даже новые объекты.
Основные объекты
Основные объекты
Каждый провайдер данных имеет четыре основных объекта, которые указаны в табл. 4.1.Таблица 4.1. Основные объекты провайдера данных
Объект
Краткое описание
Connection
Устанавливает соединение с указанным источником данных
Command
Выполняет команду по
2.1. Документы Word
2.1. Документы Word
Файлы в Word называются документами. В Word 2007 используется новый формат файлов – DOCX. Такие файлы нельзя прочитать при помощи предыдущих версий Word, в которых файлы имели расширение DOC.Когда вы открываете окно программы Word, в нем автоматически создается
Объекты DataSet с множеством таблиц и объекты DataRelation
Объекты DataSet с множеством таблиц и объекты DataRelation
До этого момента во всех примерах данной главы объекты DataSet содержали по одному объекту DataTable. Однако вся мощь несвязного уровня ADO.NET проявляется тогда, когда DataSet содержит множество объектов DataTable. В этом случае вы можете
Интерфейс Word 2007 и его объекты
Интерфейс Word 2007 и его объекты
В данной книге описан Word 2007, так как даже версия Word, предшествующая версии 2007, датируется 2003 годом. Многие пользователи используют в своей работе Microsoft Office 2003, Microsoft Office XP (2002 год) и даже Microsoft Office 2000. Тем не менее лучше ориентироваться на новые
MICROSOFT WORD
MICROSOFT WORD
…Я люблю – и значит, я живу, – это из Высоцкого …Я пишу – и значит, я работаю в Word, – это уже из нашей повседневной реальности… Наверное, нет в мире другой столь популярной программы, как текстовый редактор Word (исключая разве что Windows, хотя Word превосходно себя
Word Utilities
Word Utilities
(http://wordutilities.chat.ru/)Эта небольшая, всего 0,3 Мб, программка поможет тем, кто никак не может привыкнуть к переключению языка набора или ставит множество пробелов между словами.? Word Utilities оптимизирует размер межсловных пробелов.? Разберется с короткими строками абзацев.?
MS Word
MS Word
Создание и разметка документаСовременную жизнь нельзя представить без обилия текстовых документов в бумажном и электронном виде.Microsoft Word – один из лучших текстовых редакторов. Он позволяет создавать и редактировать документы, добавлять в них таблицы и рисунки,
13.1.Окно MS Word
13.1.Окно MS Word
Знакомство с Word начнем с главного окна. Понимаю, тут много разных кнопок, которые сразу хочется понажимать. Однако для начала изучим основные элементы окна (рис. 108):Заголовок окна — в нем выводится имя вашего документа (имя файла без расширения «.doc»);Главное
Глава 4 Microsoft Word
Глава 4
Microsoft Word
4.1. Возможности Microsoft Word
Microsoft Word — один из самых лучших и мощных текстовых редакторов на сегодняшний день. Word, в отличие от Блокнота и WordPad, не входит в состав Windows, а распространяется в составе программного пакета Microsoft Office. Программа обладает огромным
Настройка интерфейса Word
Настройка интерфейса Word
Первая вкладка ленты, с которой мы познакомимся более подробно, – это вкладка Вид(рис. 5.7). С ее помощью можно изменять режимы просмотра документа, выбирать масштаб, включать или выключать отображение элементов интерфейса, а также работать с
Практическая работа 41. Графические объекты в документах Word
Практическая работа 41. Графические объекты в документах Word
Задание. Создать документ, вставить в него картинки, фотографии, автофигуры, объекты WordArt и SmartArt. Пример документа показан на рис. 5.94, но вы можете создать аналогичный документ и на другую тему.Последовательность
Word
Word
Программа Microsoft Word – очень мощный текстовый редактор. Она позволяет сделать с текстом все, что угодно (и не только с текстом). Думаю, что вы уже видели толстые и умные книги по изучению этой программы. Но, по всей вероятности, подавляющее большинство из них не содержит ее
Часть 1 Часть 2
Названия используются, для того, чтобы подписать объект (рисунок, главу, текст, диаграмму и прочее) и в дальнейшем ссылаться на него.
В этой новости мы мы покажем, как задавать названия объектов и как создавать текстовые ссылки на эти названия, изменяемые автоматически.
Название представляет собой текст, состоящий из 3 частей: тип, номер, описание. Например: «Рис. 1 Вставить название». Для того, чтобы перемещать название объекта вместе с объектом, следует вставить объект и название общую рамку, об этом мы рассказали в первой части.
Теперь настало время создать название объекта и поместить его в рамку с объектом, для этого поместите курсор в рамку с объектом нажмите «Ссылки» – «Вставить название» (Рис. 1).
Рис. 1
В открывшемся окне выберите подпись, которую будете использовать для всех объектов этого типа, например «Рисунок» и нажмите «ОК» (Рис. 2 пункт 2. и 4.). После этого появится надпись отображаемая в графе название (Рис. 2 пункт 1.). Эта надпись будет отредактирована, так же как текст, в который она вставляется или же по умолчанию, если текста рядом нет. Формат по умолчанию отображается в графе название (Рис. 2 пункт 1.).
Рис. 2
Далее, когда вы создаете следующие объекты и снабжаете их названиями, они нумеруются в той последовательности, в которой были созданы. Для того чтобы они стали пронумерованы в той последовательности, в которой они расположены в документе, «Ссылки» – «Вставить название» (Рис. 1) и в открывшемся окне нажмите «Нумерация…» (Рис. 2 пункт 3.) и в открывшемся окне выберете вид нумерации и нажмите «ОК» (Рис. 3).
Рис. 3
После этого действия ваши названия автоматически переименуются в той последовательности, в которой они находятся в документе. Для обновления нумерации в объектах надо выделить их и нажать клавишу F9 на клавиатуре, для обновления нумерации во всём тексте, следует выделить весь текст.
Теперь, когда у вас есть несколько пронумерованных объектов, вы можете делать ссылки на них в тексте. Для того чтобы нумерация ссылки менялась вместе с нумерацией объекта, не достаточно просто написать его название в тексте, необходимо использовать перекрёстную ссылку «Ссылки» – «Перекрестная ссылка» (Рис. 4).
Рис. 4
В открывшемся окне выбрать тип названия, на которое вы собираетесь ссылаться (Тип ссылки), выбрать в каком виде будет вставлена ссылка (Вставить ссылку на: ), указать ваш объект (Для какого названия: ) и нажать «Вставить». В моём случае я создал тип ссылки «Рис.» нумеруемый обычными цифрами без описаний (Рис. 5).
Рис. 5
Для обновления нумерации в ссылках надо выделить их и нажать клавишу F9 на клавиатуре. Для обновления нумерации во всём тексте, следует выделить весь текст.
Важно: если в названиях ваших объектов не будет описания, т.е. они будут выглядеть как «Рис. №», то ссылки не будут обновляться при нажатии F9 на клавиатуре. Чтобы решить эту проблему добавьте в конец названия каждого объекта пробел, чтобы оно стало выглядеть вот так «Рис. №_»
<<<Здесь можно посмотреть первую новость серии.