Макрос в LibreOffice для изменения фона слайда Impress на сплошной черный цвет
Посмотрел вокруг и не смог его найти. Нужен макрос, чтобы я мог повторить его 695 раз, у меня есть 695 разных файлов. Документация вроде непростая, или мне не везет.
Я мог бы сделать это в Microsoft VBA следующим образом:
Sub VbaBlackies
Dim oSl As Slide
For Each oSl In ActivePresentation.Slides
With oSl
.FollowMasterBackground = msoFalse
.DisplayMasterShapes = msoFalse
With .background
.Fill.ForeColor.RGB = RGB(0, 0, 0)
.Fill.BackColor.RGB = RGB(0, 0, 0)
End With
End With
Next oSl
End Sub
Я ищу что-то похожее в LibreOffice BASIC. Я мог бы начать в коде так:
Sub Main
Dim oDoc As Object
Dim oDPages As Object
Dim oDPage As Object
oDoc= ThisComponent
oDPages = oDoc.getDrawPAges()
For i=0 To oDPages.count()-1
oDPage = oDPages.getByIndex(i)
oDPage.Background = RGB(0,0,0) 'This does not work.
'I have no idea on how to access the object's properties and alter them.
Next i
End Sub
Есть идеи, пожалуйста?
2 ответа
Решение
То, что вы ищете, находится в листинге 15.1 макродокумента Эндрю Питоняка, который является важной ссылкой для макропрограммирования
Sub ChangeBackground
Dim oDoc as Object
oDoc = ThisComponent
Dim oDrawPages as Object, oDrawPage as Object
oDrawPages = oDoc.getDrawPages()
oDrawPage = oDrawPages.getByIndex(0)
Dim oBackground as Object
oBackground = oDoc.createInstance("com.sun.star.drawing.Background")
oBackground.FillColor = RGB(250,0,0)
oDrawPage.Background = oBackground
End Sub
Документация по API находится по адресу https://www.openoffice.org/api/docs/common/ref/com/sun/star/drawing/Background.html.
ДА! Работал как шарм, большое спасибо за ответы!
Это последний код, который сработал для меня:
Sub Main
Dim oDoc As Object
Dim oDPages As Object
Dim oDPage As Object
oDoc = ThisComponent
oDPages = oDoc.getDrawPAges()
For i=0 To oDPages.count()-1
oDPage = oDPages.getByIndex(i)
Dim oBackground As Object
oBackground = oDoc.createInstance("com.sun.star.drawing.Background")
oBackground.FillColor = RGB(0,0,0)
oDPage.Background = oBackground
Next i
End Sub