Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

22 Август 2018, 01:17 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Доступно и просто о работе в офисных пакетах
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Макрос вставки раздела.  (Прочитано 254 раз)
0 Пользователей и 1 Гость смотрят эту тему.
variator
Новичок
*
Offline Offline

Сообщений: 6


« Стартовое сообщение: 21 Июль 2018, 20:50 »

Добрый день!
Прошу помочь в создании макроса для вставки раздела в документ Writer.
Для чего нужно? Обширные статьи и мануалы не читаю из монитора, а перегоняю в бумажный вариант. При этом часто расположение текста в двух колонках экономит пространство.
Пробовал создать макрос с помощью "Запись макроса". Работает, но не сохраняется значение расстояния между колонками.
Вот в чем, собственно, и проблема.
P.S. Питоньяка читать намереваюсь. )

« Последнее редактирование: 21 Июль 2018, 20:55 от variator » Записан
mikekaganski
Ветеран
*****
Offline Offline

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 990


« Ответ #1: 22 Июль 2018, 05:12 »

Код:
Sub SelectionToSection()
  ' Thanks to:
  ' http://www.pitonyak.org/AndrewMacro.odt - 7.25.1 Insert a text section, setting columns and widths
  ' https://www.programcreek.com/java-api-examples/index.php?api=com.sun.star.text.XTextContent
  Dim oDoc As Object, oSel As Object
  oDoc = ThisComponent
  oSel = oDoc.getCurrentSelection()
  If (Not oSel.supportsService("com.sun.star.text.TextRanges")) Then
    Exit Sub ' We need a range; possibly an object selected - I don't handle that atm
  ElseIf (oSel.Count <> 1) Then
    Exit Sub ' a multi-selection is not supported
  End If
  Dim oRange As Object
  oRange = oSel(0)
  Dim oSect As Object, oCols As Object, aC()
  oSect = oDoc.CreateInstance("com.sun.star.text.TextSection")
  oCols = oDoc.CreateInstance("com.sun.star.text.TextColumns")
  oCols.setColumnCount(2)
  aC() = oCols.getColumns()
  aC(0).RightMargin = 500 ' 5 mm
  aC(1).LeftMargin = 500 ' 5 mm
  oCols.setColumns(aC())
  oSect.TextColumns = oCols
  oDoc.getText().insertTextContent(oRange, oSect, True)
End Sub
Записан

С уважением,
Михаил Каганский
variator
Новичок
*
Offline Offline

Сообщений: 6


« Ответ #2: 22 Июль 2018, 20:03 »

Код:
Sub SelectionToSection()
  ' Thanks to:
  ' http://www.pitonyak.org/AndrewMacro.odt - 7.25.1 Insert a text section, setting columns and widths
  ' https://www.programcreek.com/java-api-examples/index.php?api=com.sun.star.text.XTextContent
  Dim oDoc As Object, oSel As Object
  oDoc = ThisComponent
  oSel = oDoc.getCurrentSelection()
  If (Not oSel.supportsService("com.sun.star.text.TextRanges")) Then
    Exit Sub ' We need a range; possibly an object selected - I don't handle that atm
  ElseIf (oSel.Count <> 1) Then
    Exit Sub ' a multi-selection is not supported
  End If
  Dim oRange As Object
  oRange = oSel(0)
  Dim oSect As Object, oCols As Object, aC()
  oSect = oDoc.CreateInstance("com.sun.star.text.TextSection")
  oCols = oDoc.CreateInstance("com.sun.star.text.TextColumns")
  oCols.setColumnCount(2)
  aC() = oCols.getColumns()
  aC(0).RightMargin = 500 ' 5 mm
  aC(1).LeftMargin = 500 ' 5 mm
  oCols.setColumns(aC())
  oSect.TextColumns = oCols
  oDoc.getText().insertTextContent(oRange, oSect, True)
End Sub
Жить стало лучше, жить стало веселей.
Спасибо!
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!