Оптимальный метод якоря для вставки текста в документ Writer

Автор Dr_Lecter, 12 октября 2015, 16:02

0 Пользователи и 1 гость просматривают эту тему.

Dr_Lecter

Подскажите, как наиболее удобно и правильно реализовать вставку текстовых строк из макроса в нужные места шаблона документа?

Текст представляет собой документ содержащий около 10 таблиц в 1 колонку, внутри каждой сделано несколько столбцов.
Во вложении документ - словами "Якорь" обозначены метки вставки текста, создаваемого макросом.

Причем между "Якорь2" и "Якорь3" нужно вставить разрыв столбца.

Вставляемый текст должен получать форматирование "Якоря".

Я не очень понимаю как работает UNO - поэтому пока нашел только вариант со вставкой через "Поля пользователя", но тогда очень не удобно редактировать вставленный текст при необходимости ручных исправлений или примечаний.

rami

Цитата: Dr_Lecter от 12 октября 2015, 14:02Подскажите, как наиболее удобно и правильно реализовать вставку текстовых строк из макроса в нужные места шаблона документа?
В таблицу через ячейку. В любой текст (в том числе и в таблицу) через закладку. Можно через текстовый курсор, но в шаблонном документе лучше через закладку.

Dr_Lecter

В целом метод с закладками работает, и имя закладки в тексте находит и строки туда вставляет.

Sub InsertStringToTextBookmark(sBookmarkName AS String, sBookmarkContent AS String)
Dim oDoc AS Object
Dim oText AS Object
Dim oCursor AS Object
Dim oBookmark AS Object
oDoc = ThisComponent
oText = oDoc.Text
oBookmark = oDoc.Bookmarks.getByName(sBookmarkName)
oCursor = oText.createTextCursorByRange(oBookmark.Anchor)
oCursor.String = sBookmarkContent
End Sub


Но вот если закладка внутри ячейки таблицы то уходит в ошибку.
Возможно ли сделать чтобы искал закладку везде, не обращаясь предварительно к имени таблицы и не производя поиск по ячейкам?

rami

Цитата: Dr_Lecter от 18 октября 2015, 23:00Но вот если закладка внутри ячейки таблицы то уходит в ошибку.
Возможно ли сделать чтобы искал закладку везде, не обращаясь предварительно к имени таблицы и не производя поиск по ячейкам?
Все закладки находятся в одном месте — oBookmark = oDoc.Bookmarks, выдёргиваете одну по имени и смотрите на якорь, он имеет свойство String. Курсор тут не нужен.
Sub InsertStringToTextBookmark(sBookmarkName AS String, sBookmarkContent AS String)
Dim oDoc AS Object
Dim oText AS Object
Dim oCursor AS Object
Dim oBookmark AS Object
oDoc = ThisComponent
oText = oDoc.Text
oBookmark = oDoc.Bookmarks.getByName(sBookmarkName)
oBookmark.Anchor.String = sBookmarkContent
End Sub