Seite 1 von 1
Ersetzen nur in Markierung
Verfasst: Sa 14. Apr 2018, 22:24
von El Schwalmo
Hi Alle,
ich bin neu hier. Sollte meine Frage schon beantwortet sein, bitte einfach Link mailen.
Mein Problem: Wenn ich aus PDF-Dateien Text in LibreOffice kopiere, wird jede Zeile mit einer Absatzmarke versehen. Die möchte ich mithilfe eines Makros entfernen. 'Früher' hatte ich ein aufgezeichnetes UNO-Makro verwendet, das aber seit dem letzten Update nicht mehr funktioniert.
Folgendes Makro entfernt (genauer, ersetzt durch Leerzeichen), wie gewünscht, alle Absatzmarken im
gesamten Text:
Code: Alles auswählen
Sub Neu_Absatz_weg
Dim Doc As Object
Dim Replace As Object
Doc = StarDesktop.CurrentComponent
Replace = Doc.createReplaceDescriptor
Replace.SearchRegularExpression = TRUE
Replace.SearchString = "$"
Replace.ReplaceString = " "
Doc.replaceAll (Replace)
End Sub
Nun möchte ich aber nur die Absatzmarken in einem
markierten Textbereich entfernen. Wie geht das? Kann mir jemand helfen?
Re: Ersetzen nur in Markierung
Verfasst: Mo 16. Apr 2018, 18:25
von F3K Total
Hallo,
wenn du reinen Text markierst, könnte dieses Makro funktionieren:
Code: Alles auswählen
Sub Neu_Absatz_weg_Auswahl
Dim myDoc as object
Dim myTextCursor as object
myDoc = thiscomponent
oSel = myDoc.CurrentSelection(0)
mytextCursor = mydoc.text.createtextcursor()
mytextCursor.gotoRange(oSel,false)
sString = mytextCursor.String
sString = Replace(sString,chr(13) & chr(10)," ")
mytextCursor.String = sString
End sub
Gruß R
Re: Ersetzen nur in Markierung
Verfasst: Mo 16. Apr 2018, 23:24
von El Schwalmo
F3K Total hat geschrieben: ↑Mo 16. Apr 2018, 18:25
Hallo,
wenn du reinen Text markierst, könnte dieses Makro funktionieren
danke für deine Mühe. Leider brauche ich eine Routine für einen 'normalen' Text.
Jemand hat mir eine PN geschrieben. Leider kann ich darauf nicht antworten, weil ich offenbar noch nicht lange genug im Forum aktiv bin, sorry.
Ich hatte gehofft, es gäbe eine einfache Lösung, in der Art
Replace.xxx = TRUE
wobei xxx irgendwie angibt, dass man nur in der Markierung suchen will. Wenn man ganz normal den Suchen und Ersetzen-Dialog im Writer aufruft, kann man ja durch Anklicken eines Kontroll-Kästchens angeben, ob man nur in der Markierung suchen will.
Genauso geht es ja auch mit den regulären Ausdrücken, die man im Makro mit
Replace.SearchRegularExpression = [TRUE | FALSE]
aktivieren kann oder auch nicht.
Re: Ersetzen nur in Markierung
Verfasst: Di 17. Apr 2018, 06:23
von F3K Total
El Schwalmo hat geschrieben: ↑Mo 16. Apr 2018, 23:24
danke für deine Mühe. Leider brauche ich eine Routine für einen 'normalen' Text.
Hast du das Makro überhaupt ausprobiert? Es löscht alle Absatzschaltungen NUR im ausgewählten Bereich
Bei mir funktioniert es!
Wenn du auch
Zeilenschaltungen gemeint hast, dann versuche es hiermit.
Code: Alles auswählen
Sub Neu_Absatz_weg_Auswahl
Dim myDoc as object
Dim myTextCursor as object
myDoc = thiscomponent
oSel = myDoc.CurrentSelection(0)
mytextCursor = mydoc.text.createtextcursor()
mytextCursor.gotoRange(oSel,false)
sString = mytextCursor.String
if instr(sString,chr(13) & chr(10)) then
sString = Replace(sString,chr(13) & chr(10)," ")
else
sString = Replace(sString, chr(10)," ")
endif
mytextCursor.String = sString
End sub
Die Antwort kann nie besser als die Frage sein!
R
Re: Ersetzen nur in Markierung
Verfasst: Di 17. Apr 2018, 21:06
von El Schwalmo
F3K Total hat geschrieben: ↑Di 17. Apr 2018, 06:23
Hast du das Makro überhaupt ausprobiert?
Sorry, hatte noch keine Zeit
Sobald ich es probiert habe, melde ich mich
könnte genau das sein, was ich gesucht habe.
Re: Ersetzen nur in Markierung
Verfasst: Di 24. Apr 2018, 16:42
von El Schwalmo
F3K Total hat geschrieben: ↑Di 17. Apr 2018, 06:23
Hast du das Makro überhaupt ausprobiert? Es löscht alle Absatzschaltungen NUR im ausgewählten Bereich
hab's probiert, klappt, vielen lieben Dank
