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

Code: Alles auswählen

oSel = myDoc.CurrentSelection(0)
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! :roll:
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 :oops:

Sobald ich es probiert habe, melde ich mich

Code: Alles auswählen

oSel = myDoc.CurrentSelection(0)
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 :D