Ich hatte das Problem, dass ich in einer LibreOffice Impress-Präsentation, die in einer anderen Anwendung erstellt wurde und deren Struktur … ein wenig unschön war (um es mal vorsichtig auszudrücken), alle Schriftarten auf Ubuntu ändern wollte. Nun arbeite ich zwar schon sehr lange mit LibreOffice, aber nicht mit Impress. Eine Websuche ergab unterschiedliche Ergebnisse, die aber alle nicht funktionierten. Änderungen an den Masterpages wurden ebenso wenig auf die Folien übernommen, wie Änderungen in den Formatvorlagen. Es sah so aus, als seien die Font-Anweisungen an allen Elementen hinterlegt worden. Ein Teil der Wahrheit ist aber wohl auch, dass diese Funktionen in Impress dringend überarbeitungswürdig zu sein scheinen.
Lösung war dann ein Makro:
Sub AlleSchriftenAufUbuntu()
Dim oDoc As Object
Dim oSlide As Object
Dim oShape As Object
Dim i As Integer, j As Integer
Dim oText As Object
Dim oCursor As Object
Dim neueSchrift As String
' HIER DIE NEUE SCHRIFTART EINTRAGEN:
neueSchrift = "Ubuntu"
oDoc = ThisComponent
' Durch alle Folien iterieren
For i = 0 To oDoc.getDrawPages().getCount() - 1
oSlide = oDoc.getDrawPages().getByIndex(i)
' Durch alle Objekte auf der Folie iterieren
For j = 0 To oSlide.getCount() - 1
oShape = oSlide.getByIndex(j)
' Prüfen, ob das Objekt Text enthält
If oShape.supportsService("com.sun.star.drawing.Text") Then
oText = oShape.getText()
oCursor = oText.createTextCursor()
oCursor.gotoStart(False)
oCursor.gotoEnd(True)
' Schriftart ändern - egal welche es vorher war
oCursor.CharFontName = neueSchrift
End If
Next j
Next i
MsgBox "Alle Schriftarten wurden auf Ubuntu geändert!"
End Sub

