Seite 1 von 1

Suchen und ersetzen in LibreOfficeCalc OLE-Formelobjekt

Verfasst: So 22. Mär 2026, 21:32
von Sandwich
Hallo,
ich möchte in einem OLE-Formelobjekt (also nicht in einer Zellen-Formel) suchen und ersetzen, und habe absolut keine Ahnung, wie das gehen könnte (ausser, dass ich den gesamten Formel-Text kopiere, in einer Text-Datei abspeichere und mit einem Texteditor bearbeite, und dann wieder zurückkopiere).
Geht das auch direkt in LOC?

Danke!

----------
Ubuntu
Version 24.04.4 LTS (Noble Numbat) 64-bit
Kernel Linux 6.8.0-101-generic x86_64
MATE 1.26.2

Version: 24.2.7.2 (X86_64) / LibreOffice Community
Build ID: 420(Build:2)

Re: Suchen und ersetzen in LibreOfficeCalc OLE-Formelobjekt

Verfasst: Mo 23. Mär 2026, 03:17
von karolus
Kannst du eine Calc-datei mit einer oder mehreren Ole-Formeln anhängen und konkret beschreiben was du suchen|ersetzen willst? Danke!

Re: Suchen und ersetzen in LibreOfficeCalc OLE-Formelobjekt

Verfasst: Mo 23. Mär 2026, 18:17
von Sandwich
Das ist nur ein Mini-Beispiel ("2" soll durch "3" ersetzt werden); mein "reales" Beispiel ist viel umfangreicher, sodass alles "händisch" zu durchsuchen zu aufwändig wäre.
such-ersetz.ods
(13.12 KiB) 126-mal heruntergeladen

Re: Suchen und ersetzen in LibreOfficeCalc OLE-Formelobjekt

Verfasst: Di 24. Mär 2026, 20:14
von mikele
Hallo,
meiner Meinung nach geht das nur per Makro. Das folgende sucht in allen Tabellenblättern nach (OLE)Formeln und ersetzt entsprechend.

Code: Alles auswählen

def ersetzen_in_formeln():
    doc = XSCRIPTCONTEXT.getDocument()
    suchen="2"
    ersetzen="3"
    for dp in doc.DrawPages:
        for shape in dp:
            if shape.supportsService("com.sun.star.drawing.OLE2Shape"):
                formel=shape.EmbeddedObject.Component.Formula
                shape.EmbeddedObject.Component.Formula=formel.replace(suchen, ersetzen)
bzw. in Basic

Code: Alles auswählen

Sub ersetzen_in_formeln
	Doc=ThisComponent
	suchen="2"
	ersetzen="3"
	for k=0 to Doc.Drawpages.Count-1
		DP=Doc.Drawpages(k)
		for i=0 to DP.Count-1
			Shape=DP(i)
			if Shape.supportsService("com.sun.star.drawing.OLE2Shape") then
				alt=split(Shape.EmbeddedObject.Component.Formula,suchen)
				neu=join(alt,ersetzen)
				Shape.EmbeddedObject.Component.Formula=neu
			end if
		next
	next
End Sub

Re: Suchen und ersetzen in LibreOfficeCalc OLE-Formelobjekt

Verfasst: Fr 27. Mär 2026, 20:15
von Sandwich
Hallo,

mit Makros hatte ich bis jetzt nichts zu tun. Bis ich mich da eingearbeitet habe, nehme ich mal die Text-Datei-Variante.

Danke!

LG, Sw.