Как удалить закладку из документа LO Writer средствами LO Basic (из макроса)

Автор ost, 17 июля 2021, 11:53

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

ost

Доброго. Как удалить закладку из документа Writer?
Документ создается из шаблона и уже содержит закладки с известными именами.
Вставка содержимого в позицию закладки происходит только в случае наличия данных для такой вставки.
В коде осуществляется обход имен закладок документа и проверяется есть ли необходимость вставки в ее позицию некого текста (содержится в элементах массива aText).
В случае необходимости - текст вставляется. А вот как удалить закладку из документа Writer (хорошо бы вместе с абзацем в котором она определена) если вставка в позицию закладки не нужна? Что написать в ветку "else"?
Спасибо.


oTables = ThisComponent.TextTables
oTable = oTables.getByName("Таблица1")
oBMs = ThisComponent.getBookMarks()

'конструктор имен закладок.
For i = Lbound(aText) to Ubound(aText)
   if aText(i) <> "" Then
       sBMName = "prnStr" & format(i, "00")
       oBM = oBMs.getByName(sBMName)
       oBM.getAnchor().String = aText(i)
   else
       Если вставка в позицию закладки не нужна - удаляем закладку
   end if
next i

ost

ветка "else" будет выглядеть так


ThisComponent.Text.removeTextContent(oBM)


Однако текст закладки в документе и сам абзац не удаляется.

rami

Мне кажется, вы "бодаетесь" с неправильными закладками ;D

Есть два типа закладок:

1. "точечная" — у неё начало и конец в одной точке, а текст каждый раз вставляется после закладки. Эта закладка создаётся в позиции курсора. (по видимому ваш случай)

2. "линейная" — создаётся в позиции выделения, начало и конец разные, текст вставляется во внутрь закладки, новый текст заменяет старый, ничего удалять не нужно. Если вам не нужен никакой текст в закладке, вставьте в неё пустую строку.

см. пример (содержимое закладок выделил стилями символов, пояснения в макросе):

ost

Спасибо, rami
Здесь и тех и других закладок хватает.
Много лишних с лишними же абзацами. Нередка ситуация, когда абзац содержит только закладку и ничего другого. Нужно такие закладки удалить вместе с содержащими их пустыми абзацами. Поможете?

rami