BITTE helfen Sie uns HEUTE mit einer SPENDE
Das LibreOffice Forum braucht jetzt Ihre Hilfe!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Ersetzen nur in Markierung

Alles zur Programmierung im LibreOffice.
Antworten
El Schwalmo
Beiträge: 11
Registriert: Sa 14. Apr 2018, 22:17

Ersetzen nur in Markierung

Beitrag von El Schwalmo » Sa 14. Apr 2018, 22:24

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?

F3K Total
Beiträge: 2405
Registriert: So 10. Apr 2011, 10:10

Re: Ersetzen nur in Markierung

Beitrag von F3K Total » Mo 16. Apr 2018, 18:25

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
Windows 10: AOO, LO Linux Mint: AOO, LO

El Schwalmo
Beiträge: 11
Registriert: Sa 14. Apr 2018, 22:17

Re: Ersetzen nur in Markierung

Beitrag von El Schwalmo » Mo 16. Apr 2018, 23:24

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.

F3K Total
Beiträge: 2405
Registriert: So 10. Apr 2011, 10:10

Re: Ersetzen nur in Markierung

Beitrag von F3K Total » Di 17. Apr 2018, 06:23

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
Windows 10: AOO, LO Linux Mint: AOO, LO

El Schwalmo
Beiträge: 11
Registriert: Sa 14. Apr 2018, 22:17

Re: Ersetzen nur in Markierung

Beitrag von El Schwalmo » Di 17. Apr 2018, 21:06

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.

El Schwalmo
Beiträge: 11
Registriert: Sa 14. Apr 2018, 22:17

Re: Ersetzen nur in Markierung

Beitrag von El Schwalmo » Di 24. Apr 2018, 16:42

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

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten