Вопрос № 96553: Как вставить закладку (bookmark) в MS Word?...
Вопрос № 96.553
Как вставить закладку (bookmark) в MS Word?
Отправлен: 27.07.2007, 00:54
Вопрос задал: ALEXEY (статус: 1-ый класс)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Graf David
Здравствуйте, ALEXEY!
Закладка — это элемент документа, которому присвоено уникальное имя. Это имя можно использовать для последующих ссылок. Например, можно использовать закладку для определения текста, который необходимо проверить позже. Чтобы в следующий раз не искать данный текст во всем документе, можно перейти к нему с помощью диалогового окна Закладка.
В нашем случае закладками являются элементы шаблона, выделенные курсивом (смотрим в папку Dot). Создаются они очень просто:
Выделите элемент, которому следует назначить закладку – например курсивный текст Заказчик
В меню Вставка выберите команду Закладка
В поле Имя закладки введите или выберите нужное имя – в данном случае вводим имя «Заказчик». Имя закладки должно начинаться с буквы, в нем могут использоваться цифры, но не должно быть пробелов. Если потребуется разделить слова в имени закладки, можно использовать знак подчеркивания, например: Главный_заказчик.
Нажмите кнопку Добавить.
В итоге получили закладку с именем «Заказчик». В принципе, можно было просто установить курсор в нужное место и вышесказанным образом создать закладку. Но тогда для просмотра, где какая закладка установлена в документе нужно будет через меню Вставка – Закладка выбрать имя закладки и нажать кнопку Перейти. Это неудобно, проще и нагляднее создать одноименный текст в документе.
Теперь осталось создать функцию, которая бы открывала созданный шаблон Word, вставляла бы туда вместо закладок нужный текст и сохраняла созданный документ под заданным именем. В прошлой статье уже рассказывалось о способах открытия документов Office. Осталось только выяснить, как обратиться к закладке. Делается это при помощи свойства документа Bookmarks.Item Например:
Здесь идет обращение к закладке под именем Заказчик и при помощи ее свойства Text ей присваивается нужное значение – в данном случае содержимое одноименного поля на форме. На случай, если в поле нет данных, применена функция Nz(Значение, Значение если Null).
Документ создается под именем инициалов заказчика, поэтому данное поле не должно быть пустым. Это реализовано при помощи свойства поля (см. конструктор таблиц) «Обязательное поле - Да». Кроме того, в приведенном примере так же реализована процедура поиска ранее созданного документа при помощи стандартной функции Dir. Если документ не найден, то создается новый документ Word на основе шаблона
Set app = New Word.Application
app.Visible = True
app.Documents.Add strPathDot
если же такой документ существует, то выводится соответствующее сообщение: «Документ с таким именем ранее уже был создан. Заменить его?» При выборе «Да» создается новый документ взамен старого, при выборе «Нет» открывается старый документ
Set app = CreateObject("Word.Application")
With app
.Visible = True
.Documents.Open strPathWord
End With
Ответ отправил: Graf David (статус: 1-ый класс)
Ответ отправлен: 27.07.2007, 12:11
Отвечает: Denisss
Здравствуйте, ALEXEY!
В приложении находится пример с комментариями.
Чтобы код работал, нужно добавить ComObj в uses.
Пример делает следующее:
Открывает документ. Ищет закладку с указанным именем ('MyBookMark'). Если находит, то: добавляет текст к закладке и меняет его цвет на красный. Если не находит, то: добавляет закладку в конец документа, добавляет текст к закладке и меняет его цвет на зеленый.
Если же Вам нужно вставить в текст (внутрь какого-либо), то Вам нужно получить расположение (Range) этого текста и применить функцию Doc.Bookmarks.Add(BookMarkName, R); // (R в данном случае и есть этот Range).