Seite 1 von 1

(gelöst) Writer: Suchen-und-Ersetzen-Makro vereinfachen?

Verfasst: Sa 5. Sep 2015, 18:57
von Freischreiber
Hallo,

für längere Texte benötige ich immer wieder dieselben Ersetzungsvorgänge, z. B. Wegfiltern doppelter Leerzeichen usw.

Dafür habe ich aus einem anderen Forum das folgende Makro "geklaut":

Code: Alles auswählen

sub Ersetzen
dim myDoc as object, mySuche as Object
'oFunctionAccess = createUnoService( "com.sun.star.sheet.FunctionAccess" )
myDoc = thisComponent

' Doppelte Leerzeichen:
mySuche=myDoc.createReplaceDescriptor()
With mySuche
.SearchRegularExpression = True
.setSearchString( "  ")
.setReplaceString(" ")
end With
myDoc.replaceAll(mySuche)

' Spiegelstriche:
mySuche=myDoc.createReplaceDescriptor()
With mySuche
.SearchRegularExpression = True
.setSearchString( "- ")
.setReplaceString("– ")
end With
myDoc.replaceAll(mySuche)

end sub
Wie man sieht: es wiederholt sich einiges - pro Ersetzungsvorgang sieben Zeilen. Und es kommt noch mehr (geschütztes Leerzeichen vor Eurozeichen usw.)

Meine Frage: Kennt jemand einen Weg, wie man den Code kürzer/einfacher/übersichtlicher schreiben kann?

Gruß
Freischreiber

Re: Writer: Suchen-und-Ersetzen-Makro vereinfachen?

Verfasst: Sa 5. Sep 2015, 20:18
von F3K Total
Mit einem Array und einer Schleife?

Code: Alles auswählen

sub Ersetzen
    dim myDoc as object, mySuche as Object
    myDoc = thisComponent
    ' Doppelte Leerzeichen:
    mySuche = myDoc.createReplaceDescriptor()
    Dim Suche(1,2)
    Suche(0,0) = "  "
    Suche(1,0) = " "
    Suche(0,1) = "- "
    Suche(1,1) = "-"
    Suche(0,2) = " -"
    Suche(1,2) = "-"
    for i = 0 to 2
        With mySuche
            .SearchRegularExpression = True
            .setSearchString(Suche(0,i))
            .setReplaceString(Suche(1,i))
        end With
        myDoc.replaceAll(mySuche)
    next i
end sub
Gruß R

Re: Writer: Suchen-und-Ersetzen-Makro vereinfachen?

Verfasst: Mo 7. Sep 2015, 08:27
von Freischreiber
:idea: Danke!

Das wird wirklich einiges kürzer. Da mach ich wahrscheinlich einen Umbau zum Abschluß daraus, wenn alle Ersetzungen drinstehen, weil man das DIM und die Schleife an die richtige Gesamtzahl anpassen muß.

Danke und Gruß
Freischreiber

Re: (gelöst) Writer: Suchen-und-Ersetzen-Makro vereinfachen?

Verfasst: Di 8. Sep 2015, 08:12
von karolus
Hallo

Code: Alles auswählen

            .SearchRegularExpression = True
Du könntest auch reguläre Ausdrücke benutzen und nicht nur behaupten es zu tun!

Code: Alles auswählen

search = " ?( |-) *"
replace = "$1"


Karolus

Re: (gelöst) Writer: Suchen-und-Ersetzen-Makro vereinfachen?

Verfasst: Di 8. Sep 2015, 09:09
von Freischreiber
Hallo,

verstehe ich nicht: was tut dein Code? Bei den Strichen funktioniert er vermutlich nicht. Dort soll ein Trennstrich durch einen Gedankenstrich ersetzt werden (ALT+0150). Sieht man in dieser Codeschriftart nicht.

Aber für meine Suchstrings heißt es wohl, ich könnte die Zeile
.SearchRegularExpression = True
einfach weglassen?

Gruß
Freischreiber

Re: (gelöst) Writer: Suchen-und-Ersetzen-Makro vereinfachen?

Verfasst: Di 8. Sep 2015, 10:02
von karolus
Freischreiber hat geschrieben:...
Aber für meine Suchstrings heißt es wohl, ich könnte die Zeile
.SearchRegularExpression = True
einfach weglassen
....oder auf `False` setzen