ich habe einen Text mit vielen leeren Zeilen drin. Das sieht dann z.B. wie folgt aus:
¶ (An dieser Position ist ein Bild eingefügt, das im Hintergrund liegt. Der Text ist also über dem Bild.
¶
¶
Lorem ipsum¶
Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquid ex ea commodi consequat.¶
¶
¶
¶
Quis aute iure reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.¶
¶
¶
¶
¶
Excepteur sint obcaecat cupiditat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.¶
¶
¶
¶ (An dieser Position befindet sich ein Seitenumbruch)
Drei Absatzumbrüche hintereinander (¶¶¶) sollen nun durch zwei Absatzumbrüche hintereinander (¶¶) ersetzt werden, und zwar so lange, bis es nur noch zwei Absatzumbrüche hintereinander (¶¶) gibt. Der Text würde dann wie folgt aussehen:
¶ (An dieser Position ist ein Bild eingefügt, das im Hintergrund liegt.)
¶
Lorem ipsum¶
Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquid ex ea commodi consequat.¶
¶
Quis aute iure reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.¶
¶
Excepteur sint obcaecat cupiditat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.¶
¶ (An dieser Position befindet sich ein Seitenumbruch)
In Word ist das schnell erledigt, indem man einfach ^p^p^p durch ^p^p ersetzt (ersetzt drei Absatzumbrüche hintereinander durch zwei Absatzumbrüche hintereinander).
In LibreOffice geht das leider nicht so.
Mit der Erweiterung AltSearch kann ich zwar leere Absätze hintereinander durch einen leeren Absatz ersetzen, allerdings verschwindet dann auch das Bild und der Seitenumbruch.
Ich überlege daher gerade, über das Abgrasen der Absätze zu gehen:
Code: Alles auswählen
Sub test_paragraph
Dim Doc As Object
Dim Enum1 As Object
Dim Enum2 As Object
Dim TextElement As Object
Dim TextPortion As Object
Doc = ThisComponent
Enum1 = Doc.Text.createEnumeration()
'loop over all paragraphs
While Enum1.hasMoreElements
TextElement = Enum1.nextElement
If TextElement.supportsService("com.sun.star.text.Paragraph") Then
Enum2 = TextElement.createEnumeration
'loop over all sub-paragraphs
While Enum2.hasMoreElements
TextPortion = Enum2.nextElement
If TextPortion.String = "" Then
MsgBox "empty"
Else
MsgBox "'" & TextPortion.String & "'"
End If
Wend
End If
Wend
End Sub
Habt ihr Ideen, was ich noch probieren könnte?
---
edit: Code korrigiert ("a = Enum2.Element" entfernt)