Suchen und ersetzen per Makro

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

achimgr
***
Beiträge: 68
Registriert: Mi, 30.04.2008 16:14

Suchen und ersetzen per Makro

Beitrag von achimgr »

Moin moin Gemeinde,
ich habe versucht, folgendes Makro aufzuzeichnen: Curser steht in irgendeiner Zelle in Tabelle2. Nun die Aufzeichnung: Kopieren, Tabelle1 aktivieren, Spalte F markiert, Strg+F, Einfügen, Nur in Selektion markiert, suchen. (Ende Aufzeichnung)
Damit speichert das Makro aber die bei der Aufnahme kopierte Zahl.
(args3(10).Name = "SearchItem.SearchString"
args3(10).Value = "9990")
Diese soll aber immer die aktuell kopierte Zahl sein.(also eigentlich Value = aktive Zelle in Tabelle2)
Wie geht das?

Grüße aus Niedersachsen,
Achimgr
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Suchen und ersetzen per Makro

Beitrag von Stephan »

ich versuche mal einen 'Blindflug':

schreibe an den unmittelbaren Anfang des Makros (also gleich nächste Zeile nach dem Sub ...):

Code: Alles auswählen

x_temp = Thiscomponent.getCurrentselection.FormulaLocal
und ändere die Zeile:

Code: Alles auswählen

args3(10).Value = "9990"
in:

Code: Alles auswählen

args3(10).Value = x_temp

Aus verschiedenen Gründen(*) ist das keine 'tolle' Lösung, sollte aber im Prinzip funktionieren.


(*)
weil z.B. keine Fehlerroutine enthalten ist 'knallt' es gnadenlos wenn vor Start des Makros mehr als eine Zelle in Tabelle2 markiert ist.



Gruß
Stephan
achimgr
***
Beiträge: 68
Registriert: Mi, 30.04.2008 16:14

Re: Suchen und ersetzen per Makro

Beitrag von achimgr »

Hallo Stephan, guten Morgen!

Danke schon mal.
bei der Ausführung des Makros wird zur Tabelle1 gewechselt, dann aber kommt die Meldung "nicht gefunden - von Anfang suchen?" Klick auf JA ergibt die Meldung "Nicht gefunden"

so sieht die Aufzeichnung aus (steht da überhaupt, das nur in Spalte "U" gesucht werden soll? "Spalte F" in der Frage war ein Beispiel tatsächlich ist es "U")

sub Main
x_temp = Thiscomponent.getCurrentselection.FormulaLocal
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 ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Nr"
args2(0).Value = 1

dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args2())

rem ----------------------------------------------------------------------
dim args3(17) as new com.sun.star.beans.PropertyValue
args3(0).Name = "SearchItem.StyleFamily"
args3(0).Value = 2
args3(1).Name = "SearchItem.CellType"
args3(1).Value = 0
args3(2).Name = "SearchItem.RowDirection"
args3(2).Value = true
args3(3).Name = "SearchItem.AllTables"
args3(3).Value = false
args3(4).Name = "SearchItem.Backward"
args3(4).Value = false
args3(5).Name = "SearchItem.Pattern"
args3(5).Value = false
args3(6).Name = "SearchItem.Content"
args3(6).Value = false
args3(7).Name = "SearchItem.AsianOptions"
args3(7).Value = false
args3(8).Name = "SearchItem.AlgorithmType"
args3(8).Value = 0
args3(9).Name = "SearchItem.SearchFlags"
args3(9).Value = 71680
args3(10).Name = "SearchItem.SearchString"
args3(10).Value = x_temp
args3(11).Name = "SearchItem.ReplaceString"
args3(11).Value = ""
args3(12).Name = "SearchItem.Locale"
args3(12).Value = 255
args3(13).Name = "SearchItem.ChangedChars"
args3(13).Value = 2
args3(14).Name = "SearchItem.DeletedChars"
args3(14).Value = 2
args3(15).Name = "SearchItem.InsertedChars"
args3(15).Value = 2
args3(16).Name = "SearchItem.TransliterateFlags"
args3(16).Value = 1280
args3(17).Name = "SearchItem.Command"
args3(17).Value = 0

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


end sub

Grüße aus Niedersachsen,
Achimgr
Antworten