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 вложенным
объектам, большинство из которых являются
коллекциями. Рассмотрим некоторые из
них, объединив объекты в группы.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
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 – очень мощный текстовый редактор. Она позволяет сделать с текстом все, что угодно (и не только с текстом). Думаю, что вы уже видели толстые и умные книги по изучению этой программы. Но, по всей вероятности, подавляющее большинство из них не содержит ее
2006 г. Word и его объекты
|
Аннотация: Лекция посвящена описанию объектной модели MS Word и подробному описанию методов, свойств и событий Application.
9.1. Объектная модель MS Word
Microsoft Word 2007, как, впрочем, и другие приложения Office, имеет большую объектную модель, в которую входят множество объектов и коллекций. Однако на практике чаще всего используются лишь некоторые из них.
В частности, это следующие:
- Word (Microsoft Word) — чтобы вызывать объекты Microsoft Office Word из других приложений используется объект Word.
- Application (Приложение) — объект, который включает в себя все остальные объекты и коллекции. Сам объект Application включается в объект Word.
- Documents (Документы) — коллекция, которая включает в себя объекты Document (Документ). Объект Document представляет собой документ, с которым вы работаете в редакторе.
- Bookmarks (Закладки) — c помощью объектов этой коллекции можно задавать места в документе, в которые, при автоматическом создании, можно вставлять изменяемые части.
- Paragraphs (Абзацы), Sentences (Предложения), Words (Слова), Characters (Символы), Tables (Таблицы), OMath (Математические формулы), Эти коллекции, содержащие объекты, соответствующие их названиям, могут использоваться для обработки слов документа ( Words ), предложений ( Sentences ), отдельных символов ( Characters ) и т.д.
- Selection (Выделенная область) — представляет собой выделенную область документа или позицию, в которую будет осуществляться вставка очередного символа. Этот объект часто используют при создании простых документов. Однако у него есть существенные недостатки, что делает предпочтительнее использование объекта Range в большинстве случаев.
- Range (Диапазон) — входит в Document и другие объекты, представляет собой диапазон документа, ограниченный начальным и конечным символом.
Работая с объектной моделью MS Word следует понимать, что, например, объекты Document и Selection могут содержать одинаковые коллекции объектов, например, и там и там есть коллекция Characters, в которую входят объекты Character — то есть — символы. Однако в случае с объектом Document мы можем работать с любым символом документа, а в случае с Selection — лишь с символами в пределах выделенной области. Однако, несмотря на различия, и там и там коллекция Characters имеет одинаковые свойства и методы. То же самое касается и других коллекций и объектов.
Давайте начнем с объекта Application и здесь же поговорим об использовании объектных переменных.
9.2. Работа с объектными переменными
Объектные переменные — это переменные, которые хранят ссылки на объекты. Чтобы инициализировать объектную переменную, нужно использовать ключевое слово Set. Например, так (листинг 9.1.):
Set obj_NewWord = Word.Application
Листинг
9.1.
Связывание объекта с объектной переменной
Здесь вы можете видеть присваивание переменной ссылки на объект Word.Application. Код, подобный этому, нужен в других приложениях Microsoft Office для запуска нового экземпляра MS Word.
Для того чтобы вы могли работать с Microsoft Word из других приложений — подключите библиотеку Microsoft Word 12.0 Object Library. Сделать это можно, открыв в редакторе окно References командой Tools o References.
Немного ниже мы поговорим о том, что можно делать с объектными переменными, а пока сосредоточимся на их объявлении и инициализации.
Как видите, в листинге 9.1 мы не объявляли переменную — мы сразу присвоили ей ссылку на объект. При последующей работе с такой необъявленной объектной переменной, мы не сможем пользоваться подсказкой по свойствам и методам. Вспомните — когда вы набираете в редакторе имя элемента управления и ставите после него точку — вы видите подсказку. Это очень удобно, так как позволяет избежать ошибок и излишних «походов» в справочную систему VBA.
Для того чтобы справка по свойствам и методам работала, объектную переменную надо сначала объявить, а потом присвоить ей ссылку на объект. Например, так (листинг 9.2.):
Dim obj_NewWord As Word.Application Set obj_NewWord = Word.Application
Листинг
9.2.
Предварительное объявление объектной переменной
Ссылку на объект можно присвоить в процессе объявления переменной. Для этого нужно воспользоваться ключевым словом New (листинг 9.3.):
Dim obj_NewWord As New Word.Application
Листинг
9.3.
Ключевое слово New при объявлении переменной
Переменную, объявленную таким образом, мы можем сразу же использовать по назначению. Новый экземпляр объекта будет создан при первом обращении к нему.
О том, как же пользоваться объектными переменными, скорее даже не ими, а объектами, на которые они ссылаются, мы поговорим ниже.
9.3. Объект Application — приложение
09-01-With For Each.docm — пример к п. 9.3.
Объект Application можно представить в виде приложения Microsoft Word.
Такой код позволит вывести в окно сообщения информацию об имени приложения:
Как видите, здесь мы обратились к свойству Name (Имя) объекта Application. Вот, что будет выведено при его исполнении (рис. 9.1.).
Рис.
9.1.
Свойство Name объекта Application
Здесь мы обходимся без объектных переменных, работая с уже существующим объектом. Ведь если этот код исполняется в Microsoft Word, это значит, что сам Microsoft Word уже запущен.
Чтобы упростить обращение к нескольким свойствам объекта, можно воспользоваться оператором With-End With. Этот оператор позволяет обращаться к нескольким свойствам или методам объекта в упрощенной форме. Например, чтобы вывести имя приложения и узнать номер сборки программы нужно воспользоваться таким построением (листинг 9.4.):
With Application MsgBox .Name MsgBox .Build End With
Листинг
9.4.
Оператор With — End With
Здесь мы использовали объект Application — вместо него может быть любой другой объект или объектная переменная.
Еще один оператор, которым удобно пользоваться при работе с объектами и коллекциями — это For Each…Next.
Например, для вывода в окнах сообщений имен всех открытых документов, можно написать такой код (листинг 9.5.):
Dim var_Doc For Each var_Doc In Application.Documents MsgBox var_Doc.Name Next var_Doc
Листинг
9.5.
Оператор For Each — Next
Var_Doc — это переменная типа Variant. Коллекция Application.Documents содержит все открытые документы. При каждом проходе цикла в переменную var_Doc записывается ссылка на очередной объект в коллекции.
Чтобы выйти из цикла, можно воспользоваться оператором Exit For.
Сейчас мы кратко опишем важнейшие методы, свойства и события объекта Application.
9.4. Методы объекта Application
9.4.1. BuildKeyCode, KeyString — горячие клавиши
BuildKeyCode возвращает уникальный цифровой код для заданной комбинации клавиш. Используется при назначении «горячих клавиш» для выполнения различных операций.
KeyString возвращает комбинацию клавиш для переданного кода.
Ниже мы рассмотрим пример программного назначения клавиатурной комбинации для вызова макроса.
9.4.2. ChangeFileOpenDirectorу — путь для работы с файлами
ChangeFileOpenDirectory позволяет установить директорию, в которой Microsoft Word ищет файлы для открытия. В установленной папке программа будет искать файлы при программном открытии файлов и при вызове окна открытия файлов.
Выбранная директория будет использоваться для открытия файлов по умолчанию лишь до тех пор, пока Word не будет перезапущен.
Например, чтобы установить папку » C:Новые документы » в качестве папки по умолчанию, можно использовать такой код (листинг 9.6.):
Application.ChangeFileOpenDirectory ("C:Новые документы")
Листинг
9.6.
Установка новой папки по умолчанию
Следует отметить, что если мы вызываем метод или свойство объекта Application из макроса Microsoft Word, мы можем опускать вызов Application — то есть, в вышеприведенном примере можно написать так:
ChangeFileOpenDirectory ("C:Новые документы")
9.4.3. CleanString — очистка строк
CleanString очищает переданную строку от непечатаемых и специальных символов, превратив ее в обычный текст. Такой же текст можно получить, если скопировать текст из Microsoft Word в Блокнот, а потом — обратно. Например, с помощью такого кода можно получить очищенную строку из выделенной области документа (листинг 9.7.).
str_Clean = Application.CleanString(Selection.Text)
Листинг
9.7.
Очистка строки
9.4.4. Keyboard — программное переключение раскладки
Keyboard позволяет программно переключать раскладку клавиатуры. При переключении используется идентификатор языковых и клавиатурных установок. Чтобы включить русскую раскладку, можно воспользоваться таким кодом (листинг 9.8.):
Application.Keyboard 1049
Листинг
9.8.
Переключение на русскую раскладку клавиатуры
Очевидно, что 1049 — это код русского языка. Для включения английской раскладки используйте этот метод с идентификатором 1033.
9.4.5. ListCommands — справка по горячим клавишам
ListCommands это необычный метод — если вызвать его с параметром True (листинг 9.9.) — он создаст новый документ, содержащий таблицу со списком клавиатурных сочетаний, назначенных командам MS Word. Таблица содержит несколько десятков страниц.
Application.ListCommands True
Листинг
9.9.
Вывод информации о горячих клавишах
9.4.6. NewWindow — копия окна активного документа
09-02-New Window.docm — пример к п. 9.4.6.
NewWindow создает копию окна активного документа. Это может быть полезным например, для того, чтобы вывести один и тот же документ на два монитора при работе с расширенным рабочим столом и т.д. Например, метод можно вызвать так:
Application.NewWindow
Листинг
9.10.
Создание копии окна активного документа
При необходимости можно задать, для какого именно документа вы хотите создать копию окна. Однако, это потребует использования других объектов. Например — коллекции Windows, содержащей окна документов. Такой код (листинг 9.11.) создаст одну копию для каждого открытого окна:
For i = Application.Windows.Count To 1 Step -1 Application.Windows.Item(i).NewWindow Next i
Листинг
9.11.
Создание копии для каждого открытого окна
Мы не случайно запустили цикл обхода открытых окон в обратном порядке. Дело в том, что иначе будет создано несколько копий одного и того же документа.
В этом примере вам встретились неизвестные ранее свойства Count и Item. Первое обычно содержит количество элементов в коллекции, второе позволяет обращаться к элементам по индексам или именам.
При создании копии после имени документа появляется двоеточие с номером окна, например, «:1» для первого, «:2» для второго и т.д.
9.4.7. OnTime — запуск макросов по расписанию
09-03-OnTime.docm — пример к п. 9.4.7.
OnTime позволяет устанавливать таймер, по которому можно запустить макрос в определенное время. Например, чтобы выполнить макрос MyMacros, который хранится в том же документе, что и исполняемый макрос, достаточно выполнить такой код (листинг 9.12.).
Application.OnTime When:="08:37:00", Name:="MyMacros"
Листинг
9.12.
Установка таймера запуска макроса
Параметр When указывает на время запуска, параметр Name — на имя макроса. Важно, чтобы макрос был доступен как в момент запуска таймера, так и в момент запуска самого макроса. Для того чтобы это условие соблюдалось, желательно хранить макросы, запускаемые по таймеру, в Normal.dotm, в другом глобальном шаблоне, или в том же документе, в котором произошел запуск таймера.
Как видите, мы привели пример лишь для запуска макроса в строго определенное время. А как же быть, если нужно запустить макрос, например, через пятнадцать секунд после выполнения какой-либо процедуры? Ответ прост (листинг 9.13.)
Application.OnTime _ When:=Now + TimeValue("00:00:15"), _ Name:="MyMacros"
Листинг
9.13.
Запуск макроса по расписанию
Здесь мы запускаем тот же самый макрос, но уже через 15 секунд после установки таймера. Функция Now имеет тип Date и возвращает текущую дату и время, а функция TimeValue преобразует переданное ей время в формат Date.
Если вы хотите, чтобы какой-то макрос запускался с некоторой периодичностью — установку таймера на запуск этого макроса можно установить в нем. Первый запуск макроса можно произвести вручную или каким-то другим способом (например — по событию приложения, с помощью автоматически выполняемого макроса), а последующие запуски этот макрос будет инициировать самостоятельно.