Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 884
от 01.08.2007, 16:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 471, Экспертов: 78
В номере:Вопросов: 1, Ответов: 2


Вопрос № 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 Например:

Bookmarks.Item("Заказчик").Range.Text = Nz(Заказчик, "")

Здесь идет обращение к закладке под именем Заказчик и при помощи ее свойства 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).

Удачи!

Приложение:

Ответ отправил: Denisss (статус: Профессионал)
Россия, Москва
WWW: Хлама много, по сути ничего...
----
Ответ отправлен: 28.07.2007, 14:53


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.53 beta от 09.07.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное