• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

LibreOffice - Suche über den Inhalt referenzierter Zellen

Alf72

Member
Hallo zusammen,

wahrscheinlich bin ich nur zu doof die passende Stelle zu finden, aber nach einer halben Stunde rumprobieren würde ich jetzt gerne doch die Experten zu Rate ziehen ;)

Ich habe in LibreOffice Calc (v3.5) ein Dokument mit vielen Tabellen darin. Dabei gibt es z.B. auch eine Übersicht, die andere im Dokument befindliche Tabellen "zusammenführt"... also in einer Übersicht darstellt. Die Referenz auf die anderen Tabellen ist folgendermaßen umgesetzt: "=TabelleX.A1".

Wenn ich nun in der Übersicht eine Suche durchführe, scheitert dies, da LibreOffice scheinbar den Zellinhalt "TabelleX.A1" durchsucht und nicht den referenzierten Inhalt, der in der angegebenen Zelle steht, der aber angezeigt wird!

Wie kriege ich LibreOffice nun dazu den tatsächlich angezeigten Inhalt zu durchsuchen?

Ich hoffe das war verständlich :D

Gruß Alf
 
OP
A

Alf72

Member
Super... das funktioniert!

Hat aber leider Nachteile :(
Zum einen funktionieren diese Optionen nicht bei der "normalen" Suche mit Strg+F und zum anderen scheint Libre Office sich diese Einstellung nicht zu merken. D.h. wenn man später noch einmal suchen möchte, muss man die Option erneut umstellen.

Oder gibt es eine "versteckte" Einstellung um dies standardmäßig zu ändern?
Ich habe nichts gefunden. Geschaut habe ich unter Extras->Optionen.

Aber trotzdem schon mal vielen Dank :)

Gruß Alf
 

longman

Advanced Hacker
Vielleicht wäre ja folgende extension was für Dich.

http://extensions.libreoffice.org/extension-center/search-in-calc
 
OP
A

Alf72

Member
Gerade probiert... unterstützt die "Inhaltssuche" leider auch nicht... findet nur, was Calc auch so schon findet, zeigt das Ergebnis nur anders an :/
 

longman

Advanced Hacker
N'abend

ich habe gerade mal aus Jux ausprobiert ob es mit einem Makro klappt.
Theoretisch geht es relativ einfach. Wenn Du dann das Makro als Symbol
und/oder Hotkey zuordnest kommst Du relativ schnell zum Ziel.
Ich bin jetzt selber kein VBA Freak, deshalb habe ich den Makrorecorder aktiviert
und die Suche (STRG+H) einfach aufgenommen und dann später nur die Inputbox (siehe rem ---)
hinzugefügt und den Rückgabewert als Variable 10 angegeben.
Alle Variablen wurden vom Recorder angelegt und stehen für die einzelnen Felder die im Suchdialog verfügbar wären.
Die Suchoption "Werte suchen" steht auch zwischen den rem --- Zeilen unten drin.

Kannst ja mal ein bisschen experimentieren. Macht sogar ein bisschen Spass.

Hier der "Quellcode":

Code:
REM  *****  BASIC  *****

sub SuchMakro
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(17) as new com.sun.star.beans.PropertyValue

rem ---
InputVal = InputBox("Suchstring:", "Test", "default value")
rem ---

args1(0).Name = "SearchItem.StyleFamily"
args1(0).Value = 2

rem ----- siehe unten ist die Einstellung für Suchen in Werten (Value=1) ---
args1(1).Name = "SearchItem.CellType"
args1(1).Value = 1
rem ------------------------------------------------------------------------

args1(2).Name = "SearchItem.RowDirection"
args1(2).Value = true
args1(3).Name = "SearchItem.AllTables"
args1(3).Value = false
args1(4).Name = "SearchItem.Backward"
args1(4).Value = false
args1(5).Name = "SearchItem.Pattern"
args1(5).Value = false
args1(6).Name = "SearchItem.Content"
args1(6).Value = false
args1(7).Name = "SearchItem.AsianOptions"
args1(7).Value = false
args1(8).Name = "SearchItem.AlgorithmType"
args1(8).Value = 0
args1(9).Name = "SearchItem.SearchFlags"
args1(9).Value = 65536
args1(10).Name = "SearchItem.SearchString"

rem ---
args1(10).Value = InputVal
rem ---

args1(11).Name = "SearchItem.ReplaceString"
args1(11).Value = ""
args1(12).Name = "SearchItem.Locale"
args1(12).Value = 255
args1(13).Name = "SearchItem.ChangedChars"
args1(13).Value = 2
args1(14).Name = "SearchItem.DeletedChars"
args1(14).Value = 2
args1(15).Name = "SearchItem.InsertedChars"
args1(15).Value = 2
args1(16).Name = "SearchItem.TransliterateFlags"
args1(16).Value = 1280
args1(17).Name = "SearchItem.Command"
args1(17).Value = 0

dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args1())

end sub

Falls der Makrorecorder nicht startbar oder nicht auffindbar ist:
3.5.x
Menu Tools > Options > LibreOffice > General
☑ Enable experimental (unstable) features.

3.6.x (see comments)
Menu Tools > Options > LibreOffice > General
☑ Enable macro recording (limited)

EDIT 2012-11-29

4.0.x (LibO-Dev 4.0.0.0.alpha1)
Menu Tools → Options → LibreOffice → Advanced
Optional (unstable) options
☑ Enable macro recording
(see also → Release Notes 4.0)

Nützlich:
http://www.ooowiki.de/Makro

https://help.libreoffice.org/Common/Recording_a_Macro/de
 
OP
A

Alf72

Member
Super... vielen Dank für die tolle Unterstützung!

Aber dafür muss ich dann doch tiefer einsteigen, als ich es eigentlich vor hatte.
Mal schauen... wenn ich irgendwann mal Zeit finde, werde ich mir die Sache vielleicht mal genauer anschauen. Für eine "richtige" Umsetzung ist dann doch ein wenig mehr Hintergrundwissen meinerseits erforderlich. Man müsste zur eigentlichen Suche dann noch eine Schleife bauen, die alle Ergebnisse nacheinander durchläuft, etc... dafür kenne ich mich aber zu wenig damit aus.

Gruß Alf
 
Oben