Seite 1 von 1

Suchen Ersetzen dauert sehr lange (CALC)

Verfasst: Mi, 12.08.2015 13:05
von Devil
Ich durchlaufe folgenden Code mehrmals um ca 400 verschiedene Variablen in einem Calc Dokument zu suchen und zu ersetzen. Dies dauert allerdings sehr lange (ca 13 sec.). Im Writer bin ich das Problem umgangen, indem ich Benutzerfelder verwendet habe. Diese scheint es im Calc jedoch scheinbar nicht zu geben, weshalb ich auf "Textvariablen" zurückgreife. Gibt es da eine schnellere Methode oder etwas ähnliches wie Benutzerfelder?

Hier der Suchen und Ersetzencode:

Code: Alles auswählen

Sub Suchen_Ersetzen(zeile as String)

Doc = ThisComponent

aZeile = SPLIT(zeile, "=") 'Zeile aus Konfig Splitten
var = aZeile(0)
txt = aZeile(1)

Sheet = ThisComponent.Sheets(0)
Repl = Sheet.createReplaceDescriptor()
Repl.setSearchString("<</"+var+"/>>")
Repl.setReplaceString(txt)
Repl.SearchWords = False
Repl.SearchCaseSensitive = False
Repl.SearchRegularExpression = True
Sheet.replaceAll( Repl)

End Sub

Re: Suchen Ersetzen dauert sehr lange (CALC)

Verfasst: Mi, 12.08.2015 22:13
von Karolus
Magst du uns den restlichen Code zeigen? - und vielleicht auch ein paar Zeilen deines `Konfig`-files?

sind die Ersetzungen alle individuell?

Re: Suchen Ersetzen dauert sehr lange (CALC)

Verfasst: Do, 13.08.2015 08:25
von Devil
Hier ein Beispiel aus der Konfig:

User=Devil
Unterschrift=i.A. Satan
UserVorname=Devil
UserName=Satan

Diese werden so übergeben. Das aufrufen des Ganzen ohne das suchen und ersetzen dauert nur ca eine halbe sekunde.
In dem Konfig File werden immer wieder neue Daten hinterlegt, welche ersetzt werden. (allerdings nicht während das Makro läuft)

Re: Suchen Ersetzen dauert sehr lange (CALC)

Verfasst: Do, 13.08.2015 08:50
von Karolus
Devil hat geschrieben:Hier ein Beispiel aus der Konfig:

User=Devil
Unterschrift=i.A. Satan
UserVorname=Devil
UserName=Satan

Diese werden so übergeben. Das aufrufen des Ganzen ohne das suchen und ersetzen dauert nur ca eine halbe sekunde.
In dem Konfig File werden immer wieder neue Daten hinterlegt, welche ersetzt werden. (allerdings nicht während das Makro läuft)
Ich weiss nicht wie es anderen geht - ich fühle mich irgendwie veräppelt beim lesen dieser Daten

Im übrigen verschweigst du immer noch den massgeblichen Code.

oder häng besser gleich die verwendete Calcdatei, nebst kompletter Konfig an.