Объект Word.Bookmark, применение закладок в шаблоне, получение из объектов Bookmark объектов Selection и Range
Объект Bookmark — это просто закладка. На практике это — самый удобный способ навигации по документам, созданных при помощи шаблонов (например, отчетов). Принципиальное отличие его от объектов Selection и Range заключается в том, что все выделения и диапазоны теряются при закрытии документа (объекты Range вообще существуют только во время работы создавшей их процедуры, а закладки сохраняются вместе с документом. Если документ создан на основе шаблона, то все закладки, которые были определены в шаблоне, будут определены и в созданном на основе этого шаблона документе.
Создать закладку (меню Вставка -> Закладка) намного проще, чем считать количество символов для объекта Range от начала документа/абзаца/предложения, или выполнять операции Move() (MoveDown(), MoveRight(), MoveNext()) для объекта Selection. Кроме того, если вы будете исправлять шаблон (а делать это на практике приходится очень часто), вам, скорее всего, не придется править код для определения объектов Selection и Range.
Функциональность объекта Bookmark невелика. Свойств и методов у этого объекта намного меньше, чем у объектов Selection и Range. Однако обычно никто и пытается использовать объект Bookmark для работы с текстом напрямую. Из объекта Bookmark очень просто получить объект Selection (при помощи метода Select()) или объект Range (при помощи свойства Range()) — и дальше можно пользоваться уже свойствами и методами этих объектов, например:
ThisDocument.Bookmarks("Bookmark1").Select
MsgBox Selection.Text
Создавать объекты Bookmark программным способом необязательно, но если есть необходимость, то можно использовать метод Add() коллекции Bookmark:
ThisDocument.Bookmarks.Add Name:="temp", Range:=Selection.Range
У этого метода — всего лишь два параметра, оба которых используются в примере.
Некоторые важные свойства объекта Bookmark:
Методов у объекта Bookmark всего три — Copy(), Delete() и Select(). Copy() — создает закладку на основе существующей, Delete() — удаляет ее, а Select() — выделяет то, на что ссылается закладка.