Zeilenumbruch in Makro ersetzen
Verfasst: Sa 6. Jun 2026, 00:56
Hallo,
in LO 26.2 unter Windows öffne ich mit Writer eine .txt-Datei, deren Zeilen alle mit einem harten Zeilenumbruch (<CR><LF>) enden. Diese Umbrüche möchte ich gerne durch ein Leerzeichen ersetzen und am Ende die mit einem Proportionalfont neu umbrochene Datei im .odt-Format speichern. Das lässt sich eigentlich leicht mit Bordmitteln machen (Suchen/Ersetzen mit RegEx $).
ABER:
An den "wahren" Absätzen möchte ich die Umbrüche erhalten, und dann wird's bei längeren Dateien schon etwas mühsam, weil ich bei jeder Zeile entsprechend klicken muss. Außerdem will ich auch Trennungen am Zeilenende aufheben, und spätestens dann kommt der Wunsch nach einem Makro auf.
Wegen der harten Zeilenumbrüche behandelt Writer jede einzelne Zeile als Abschnitt (paragraph). Somit gehe ich mit folgender Schleife durch den Text:
In "line" finde ich aber nur die sichtbaren Zeichen der Zeile, und die Control Codes am Ende sind weg. Komme ich an die noch irgendwie ran, um sie zu ersetzen, oder muss ich ganz anders vorgehen?
in LO 26.2 unter Windows öffne ich mit Writer eine .txt-Datei, deren Zeilen alle mit einem harten Zeilenumbruch (<CR><LF>) enden. Diese Umbrüche möchte ich gerne durch ein Leerzeichen ersetzen und am Ende die mit einem Proportionalfont neu umbrochene Datei im .odt-Format speichern. Das lässt sich eigentlich leicht mit Bordmitteln machen (Suchen/Ersetzen mit RegEx $).
ABER:
An den "wahren" Absätzen möchte ich die Umbrüche erhalten, und dann wird's bei längeren Dateien schon etwas mühsam, weil ich bei jeder Zeile entsprechend klicken muss. Außerdem will ich auch Trennungen am Zeilenende aufheben, und spätestens dann kommt der Wunsch nach einem Makro auf.
Wegen der harten Zeilenumbrüche behandelt Writer jede einzelne Zeile als Abschnitt (paragraph). Somit gehe ich mit folgender Schleife durch den Text:
Code: Alles auswählen
sub Test
dim c as String
dim line as String
dim document as Object
dim oTextCursor as Object
dim count as Integer
document= ThisComponent.CurrentController.Frame
oTextCursor= ThisComponent.Text.createTextCursor()
oTextCursor.gotoStart(false)
Do
oTextCursor.gotoEndOfParagraph(true)
line= oTextCursor.getString()
c= Right(line, 1) 'Hier hatte ich ein <LF> erwartet.
' Print Instr(line, chr(13)) & " " & Instr(line, chr(10)) & " " & c ' War immer 0 0 und letztes Zeichen der Zeile.
' if (condition) then
' Replace line break by Blank.
' end if
Print line
Loop While oTextCursor.gotoNextParagraph(false)
MsgBox "Count of lines: " & count, 0, "Result"
end sub