Suchefunktion durch Makro gestalten
Moderator: Moderatoren
Suchefunktion durch Makro gestalten
In einem Calc-Dokument soll die Suchefunktion komfortabler gestaltet werden, da die übliche Eingabemaske (Strg + „G“) zu viel vom Dokument verdeckt.
Vorgesehen ist die Zelle „D6“ als Suchfeld. Mit einem Button soll die Suche in dem geöffneten Dokument gestartet werden. Mit einem zweiten Button soll weiter gesucht werden.
Wie ich Schaltflächen erstelle, ist mir bekannt. Allerdings fehlen mir die Kenntnisse zur erforderlichen Makroprogrammierung.
Wie lässt sich dieses Problem am geschmeidigsten lösen? (Open Office 1.1)
Herzlichen Dank ... Lutz
Vorgesehen ist die Zelle „D6“ als Suchfeld. Mit einem Button soll die Suche in dem geöffneten Dokument gestartet werden. Mit einem zweiten Button soll weiter gesucht werden.
Wie ich Schaltflächen erstelle, ist mir bekannt. Allerdings fehlen mir die Kenntnisse zur erforderlichen Makroprogrammierung.
Wie lässt sich dieses Problem am geschmeidigsten lösen? (Open Office 1.1)
Herzlichen Dank ... Lutz
Hallo Lutz
Da ich nicht sicher bin, wie gut das in OOo1.1 funktioniert, bin ich für dich mal kreativ geworden :
Speichere den Code in der Standardbiliothek deines Dokuments, und verknüpfe die schaltflächen mit den Subs 'sucheanfang' und 'weitersuchen'.
Gruß Karo
Mit kreativer Nutzung von ->Extras->Makros aufzeichnen.Wie lässt sich dieses Problem am geschmeidigsten lösen? (Open Office 1.1)
Da ich nicht sicher bin, wie gut das in OOo1.1 funktioniert, bin ich für dich mal kreativ geworden :
Code: Alles auswählen
sub sucheanfang
suchdok = thisComponent
suchtab = suchdok.sheets(0) '0→erstes Tabellenblatt
suchtext = suchtab.getcellbyPosition(3,5).string '-->D6
suchen(suchtext,0)
end sub
sub weitersuchen
suchdok = thisComponent
suchtab = suchdok.sheets(0) 'erstes Tabellenblatt
suchtext = suchtab.getcellbyPosition(3,5).string '-->D6
suchen(suchtext,1)
end sub
sub suchen(suchtext,w)
rem aufgezeichneter Code von->su&ersetzen-'suchen', nachträglich sind-
rem - die Variblen 'suchtext' und 'w' eingefügt.
rem define variables
dim document as object
dim dispatcher as object
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(17) as new com.sun.star.beans.PropertyValue
args1(0).Name = "SearchItem.StyleFamily"
args1(0).Value = 2
args1(1).Name = "SearchItem.CellType"
args1(1).Value = 0
args1(2).Name = "SearchItem.RowDirection"
args1(2).Value = true
args1(3).Name = "SearchItem.AllTables"
args1(3).Value = false 'hier true, falls alle Blätter durchsucht werden sollen
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 '1→'regulärer Ausdruck'
args1(9).Name = "SearchItem.SearchFlags"
args1(9).Value = 65536
args1(10).Name = "SearchItem.SearchString"
args1(10).Value = suchtext '←da ist die Variable
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 = w 'w=0→suchen,w=1→weitersuchen
dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args1())
end sub
Gruß Karo
Makro - Suchen
Super Karo, da ziehe ich den Hut!
Durch Dein Makro bin ich kurz vor dem Ziel. Ob Du mir noch bei der Feinabstimmung helfen könntest?
Ich habe beide Schaltflächen „suchen“ und „weitersuchen“ mit dem entsprechenden Makros verknüpft. Beim Auslösen des ersten Makro erhalte ich die Fehlermeldung:
„BASIC-Laufzeitfehler. Argument ist nicht optional“
Danach die Schaltfläche „Weitersuchen“ betätigt und der Suchbegriff im Calc-Dokument wird schwarz hinterlegt (auch Mehrfachtreffer). Allerdings springt das Programm noch nicht automatisch zur entsprechenden Stelle im Dokument (Datei wird später einmal mehrere tausend Zeilen umfassen).
Nun müssen es natürlich nicht unbedingt zwei Schaltflächen sein. Ich habe mir dies bisher nur aus der ursprünglichen `Suchefunktion` abgeschaut.
Ließe sich die Sache auch so lösen, dass nach Aktivierung einer einzelnen Schaltfläche die Markierung zunächst zum ersten Treffer wechselt, nach einer erneuten Aktivierung zur zweiten u.s.w.? Das wäre genial
Herzlicher Gruß ... Lutz
Durch Dein Makro bin ich kurz vor dem Ziel. Ob Du mir noch bei der Feinabstimmung helfen könntest?
Ich habe beide Schaltflächen „suchen“ und „weitersuchen“ mit dem entsprechenden Makros verknüpft. Beim Auslösen des ersten Makro erhalte ich die Fehlermeldung:
„BASIC-Laufzeitfehler. Argument ist nicht optional“
Danach die Schaltfläche „Weitersuchen“ betätigt und der Suchbegriff im Calc-Dokument wird schwarz hinterlegt (auch Mehrfachtreffer). Allerdings springt das Programm noch nicht automatisch zur entsprechenden Stelle im Dokument (Datei wird später einmal mehrere tausend Zeilen umfassen).
Nun müssen es natürlich nicht unbedingt zwei Schaltflächen sein. Ich habe mir dies bisher nur aus der ursprünglichen `Suchefunktion` abgeschaut.
Ließe sich die Sache auch so lösen, dass nach Aktivierung einer einzelnen Schaltfläche die Markierung zunächst zum ersten Treffer wechselt, nach einer erneuten Aktivierung zur zweiten u.s.w.? Das wäre genial

Herzlicher Gruß ... Lutz
Hallo Lutz
Ich kann leider nicht die Fehlermeldung nachvollziehen, die du beim Auslösen von 'sucheanfang' erhälst. Bei mir tut dieses Makro genau das was du :
Was passiert bei dir wenn du die Schaltfläche mehrmals betätigst ?
Falls nur die andere Schaltfläche funktioniert, hast du evtl. irrtümlich die erste Schaltfläche mit mit der Sub 'suchen(.,.,.)' verknüpft, statt mit 'sucheanfang' ?
Gruß
Ich kann leider nicht die Fehlermeldung nachvollziehen, die du beim Auslösen von 'sucheanfang' erhälst. Bei mir tut dieses Makro genau das was du :
-hier wünscht, nämlich bei jedem Tastendruck zum nächsten Treffer wechseln.Ließe sich die Sache auch so lösen, dass nach Aktivierung einer einzelnen Schaltfläche die Markierung zunächst zum ersten Treffer wechselt, nach einer erneuten Aktivierung zur zweiten u.s.w.? Das wäre genial.
Was passiert bei dir wenn du die Schaltfläche mehrmals betätigst ?
Falls nur die andere Schaltfläche funktioniert, hast du evtl. irrtümlich die erste Schaltfläche mit mit der Sub 'suchen(.,.,.)' verknüpft, statt mit 'sucheanfang' ?
Gruß
Makro für Suchefunktion
Hey Karo,
Du hast natürlich absolut Recht. Ich hatte irrtümlich die erste Schaltfläche mit der Sub 'suchen' verknüpft, statt mit 'sucheanfang' ?
Nun funktioniert alles perfekt! Ich hatte nicht damit gerechnet, dass sich mein Idealwunsch verwirklichen lässt.
Tausend Dank !!! Lutz
Du hast natürlich absolut Recht. Ich hatte irrtümlich die erste Schaltfläche mit der Sub 'suchen' verknüpft, statt mit 'sucheanfang' ?
Nun funktioniert alles perfekt! Ich hatte nicht damit gerechnet, dass sich mein Idealwunsch verwirklichen lässt.
Tausend Dank !!! Lutz
-
- Beiträge: 5
- Registriert: Sa, 14.04.2007 12:19
Sorry
Sorry das ich das alte Thema nochmals hochhole.
Aber ich habe das gerade dank der Suche im Forum gefunden.
Ich kann genau das Makro sehr gut gebrauchen nur leider habe ich das Problem das nicht alle Tabellen durchsucht werden.
Ich habe eine Hauptübersicht und je Monat 1 Tabelle.
Nun soll in der Hauptübersicht in Suchformular wo ich einen Auftragsnummer eingeben kann (Die ja unique) ist. Nach Klick sollen alle Tabellen in Durchsucht werden. Leider findet das Makro immer keine Einträge.
Habe ein Textfeld und eine Schaltfläche. Die Schaltfläche Funktioniert (Also es wird die suche ausgeführt) Aber er sucht nicht nach dem eintrag in dem Textfeld. Muss ich die beiden Verknüpfen oder wie?
Aber ich habe das gerade dank der Suche im Forum gefunden.
Ich kann genau das Makro sehr gut gebrauchen nur leider habe ich das Problem das nicht alle Tabellen durchsucht werden.
Ich habe eine Hauptübersicht und je Monat 1 Tabelle.
Nun soll in der Hauptübersicht in Suchformular wo ich einen Auftragsnummer eingeben kann (Die ja unique) ist. Nach Klick sollen alle Tabellen in Durchsucht werden. Leider findet das Makro immer keine Einträge.
Habe ein Textfeld und eine Schaltfläche. Die Schaltfläche Funktioniert (Also es wird die suche ausgeführt) Aber er sucht nicht nach dem eintrag in dem Textfeld. Muss ich die beiden Verknüpfen oder wie?
Hallo
Du möchtest alle Tabellen durchsuchen, dafür hatte ich an entsprechender Stelle einen Kommentar eingetragen:
ändere die Zeile auf:
Gruß Karo
Du möchtest alle Tabellen durchsuchen, dafür hatte ich an entsprechender Stelle einen Kommentar eingetragen:
Code: Alles auswählen
...
args1(3).Name = "SearchItem.AllTables"
args1(3).Value = false 'hier true, falls alle Blätter durchsucht werden sollen
...
Code: Alles auswählen
...
args1(3).Value = true
....
Hallo Funnyzocker,
Der zu suchende Text steht in Zelle D6!
Viel Erfolg.
Jürgen
Wer hat denn was von einem Textfeld geschrieben.Habe ein Textfeld und eine Schaltfläche.
Der zu suchende Text steht in Zelle D6!
Vorgesehen ist die Zelle „D6“ als Suchfeld
Code: Alles auswählen
suchtext = suchtab.getcellbyPosition(3,5).string '-->D6
Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
-
- Beiträge: 5
- Registriert: Sa, 14.04.2007 12:19
TExtfeld
Kann ich das irgendwie ändern das es über das Textfeld läuft?
Sieht besser aus
Sieht besser aus
-
- Beiträge: 5
- Registriert: Sa, 14.04.2007 12:19
Geht ja nicht
Wenn ich das Textfeld mit der Zelle Verknüpfe, wird wenn ich in das Textfeld was eingebe das selbe in der Zelle eingegeben und er findet als erstes das.
Er soll aber nur das Finden was wirklich da ist und nicht was ich als Suche eingegeben habe.
Er soll aber nur das Finden was wirklich da ist und nicht was ich als Suche eingegeben habe.
Hallo
Tausch mal die ersten beiden Makros gegen:
Gruß Karo
Tausch mal die ersten beiden Makros gegen:
Code: Alles auswählen
sub sucheanfang
suchdok = thisComponent
suchtab = suchdok.sheets(0) '0→erstes Tabellenblatt
odraw1= suchtab.drawpage
form1=odraw1.forms.getbyIndex(0)
oContr=form1.getbyname("TextBox")
suchtext = oContr.Text
'suchtext = suchtab.getcellbyPosition(3,5).string '-->D6
suchen(suchtext,0)
end sub
sub weitersuchen
suchdok = thisComponent
suchtab = suchdok.sheets(0) 'erstes Tabellenblatt
odraw1= suchtab.drawpage
form1=odraw1.forms.getbyIndex(0)
oContr=form1.getbyname("TextBox")
suchtext = oContr.Text
'suchtext = suchtab.getcellbyPosition(3,5).string '-->D6
suchen(suchtext,1)
end sub
-
- Beiträge: 5
- Registriert: Sa, 14.04.2007 12:19
Danke
Ja Danke nun Funktioniert es so wie ich es mit vorgestellt habe.
Vielen Dank
Vielen Dank