Возможно ли получить доступ к абзацам документа LO Writer по индексу

Автор ost, 22 июля 2021, 11:18

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

ost

Доброго,
возможно ли получить доступ по индексу к абзацам документа LO Writer из макроса? Как?
Спасибо.

mikekaganski


' Returns number of paragraphs in current document body
Function getParagraphs() As Long
  n = 0
  pp = thisComponent.getText().createEnumeration()
  While pp.hasMoreElements()
    pp.nextElement()
    n = n + 1
  Wend
  getParagraphs = n
End Function

' Returns the paragraph number i from curent document body, or Nothing if i is out of range
' Argument i is zero-based
Function getParagraph(i As Long) As Object
  If i < 0 Then Exit Function
  n = 0
  pp = thisComponent.getText().createEnumeration()
  While pp.hasMoreElements()
    If n = i Then
      getParagraph = pp.nextElement()
      Exit Function
    End If
    pp.nextElement()
    n = n + 1
  Wend
End Function

Sub testParagraphs
  MsgBox getParagraphs()
  MsgBox getParagraph(2).getString()
  MsgBox getParagraph(-5) Is Nothing
End Sub


Но на самом деле оно будет возвращать не только абзацы, но и таблицы ... для таблиц надо делать вложенную обработку.
С уважением,
Михаил Каганский

rami

Цитата: ost от 22 июля 2021, 11:18возможно ли получить доступ по индексу к абзацам документа LO Writer из макроса? Как?
Нет, только перебором (createEnumeration).

Для сравнения: доступ к листам в Calc можно получить и перебором и по имени и по индексу.

sokol92

В дополнение к ответу Михаила - см. пункт 14.2 книги А.Питоньяка OOME_4_0.odt.
Владимир.

ost

Понятно. Получается, каждый раз "плясать от печки".
Спасибо.