Seite 1 von 2
Re: FIlter programmieren
Verfasst: Mo, 21.12.2009 13:42
von Karolus
Hallo
Es gibt -->Daten-->Filter....
Ebenso gibt es die Möglichkeit über '-->Extras-->Makros-->Makros aufzeichnen..'
verschiedene Aktionen aufzuzeichnen.
Schau mal wie weit du damit kommst, bei konkreten Detailfragen helfen wir gerne weiter, (je nach Fragestellung evtl. aber gleich ins Basic und Java Forum posten)
Gruß Karo
Re: FIlter programmieren
Verfasst: Mo, 21.12.2009 13:50
von Charly
Hallo!
Ich habe mich mal diesem Thema zusammen mit einem Forumsteilnehmer angenommen.
Vielleicht ist etwas darunter, was du gebrauchen kannst.
viewtopic.php?f=2&t=22421
Gruß
Charly
Re: FIlter programmieren
Verfasst: Mo, 21.12.2009 14:11
von Karolus
Hallo
Wir kommen wahrscheinlich schneller voran, wenn du mal die konkreten Filterkriterien beschreibst, und auch, welche Art von Daten in Spalte 3 vorkommen.
Gruß Karo
Re: FIlter programmieren
Verfasst: Mo, 21.12.2009 14:33
von Karolus
Hallo
Schau doch mal ins Thema das Charlie bereits gepostet hat,
viewtopic.php?f=2&t=22421
da stehen doch alle Infos die du benötigst.
Gruß Karo
Re: FIlter programmieren
Verfasst: Mo, 21.12.2009 16:10
von Karolus
Hallo
Ich bin grad faul und hab deshalb nur Code aufgezeichnet, und zwar folgende Routine:
1 Selektion von C1:C2000
2 -->suchen und ersetzen ->suche nach: '^[0-9]{2,}|[4-9]$' , [x]nur in Selektion , [x]regulärer Ausdruck , "
suche alle"
3 --Kontext-->Zeilen ausblenden
Code: Alles auswählen
sub suchen_und_ausblenden
dim document as object
dim dispatcher as object
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ToPoint"
args2(0).Value = "C1:C2000"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())
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
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 = 1
args1(9).Name = "SearchItem.SearchFlags"
args1(9).Value = 71680
args1(10).Name = "SearchItem.SearchString"
args1(10).Value = "^[0-9]{2,}|[4-9]$"
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 = 1
dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args1())
dispatcher.executeDispatch(document, ".uno:HideRow", "", 0, Array())
end sub
zur Übernahme siehe:
hier, im Kapitel 'Quelltext übernehmen
und evtl. auch
http://www.ooowiki.de/MakrosMitEinemKlick
Gruß Karo
Re: FIlter programmieren
Verfasst: Di, 22.12.2009 07:07
von damuschong
soweit so gut

gibt es jetzt vielleicht noch einen trick, dass auch die Zeilen in denen in besagter spalte eine 0 oder nichts steht mit ausgeblendet wird ? is wahrscheinlich ne ziemlich doofe frage
P.s, nicht die Zeilen mit 1 oder 2 oder 3 blieben stehen, sondern zbsp 10, 14, 19......
Re: FIlter programmieren
Verfasst: Di, 22.12.2009 09:20
von hylli
Also ich mag mich ja irren, aber wäre das trotz allem nicht viel einfacher mit einem Standardfilter zu lösen?
Spalte C <= 3
und
Spalte C > 0
Eventuell noch unter Zusätze die Ausgabe definieren, fertig.
Natürlich kannst Du das dann auch als Makro aufzeichnen.
Hylli
Re: FIlter programmieren
Verfasst: Di, 22.12.2009 09:32
von damuschong
Das Problem ist ja, dass sich Filter mit dem Makros-recorder nicht aufzeichnen lassen. bzw, wenn man diese dann ausführt passiert nix ;(
Re: FIlter programmieren
Verfasst: Di, 22.12.2009 09:35
von hylli
Hm, ok stimmt.
Aber der Filter ist ja so einfach, dass man den recht schnell zusammengebastelt hat, gleich bei welcher Datei. Wenn's natürlich komplexer wäre, dann wäre wahrscheinlich die Makrolösung zu bevorzugen.
Hylli
Re: FIlter programmieren
Verfasst: Di, 22.12.2009 09:36
von damuschong
args1(10).Value = "^[0-9]{2,}|[4-9]$"
könnte es sein ,dass in dieser Zeile etwas nicht stimmt ?
Re: FIlter programmieren
Verfasst: Di, 22.12.2009 09:43
von hylli
Nein, denn grundsätzlich funktioniert die Vorgehensweise bei mir, auch wenn mir der Suchstring mal wieder wie ein böhmisches Dorf vorkommt.
Hylli

Re: FIlter programmieren
Verfasst: Di, 22.12.2009 09:55
von damuschong
mein Problem mit dem bisherigen code ist, dass
1. nicht nach den Kriterien 1, 2, 3 in Splate 3 gefiltert wird
2. Zeilen die in Spalte 3 leer sind angezeigt werden
Kann mir jemand helfen ?
danke
Re: FIlter programmieren
Verfasst: Di, 22.12.2009 11:13
von damuschong
okay, jetzt musas ich nur noch die Leerzeichen ausblenden, wie könnte das klappen ?
Mein bisheriger coed sieht so aus
Code: Alles auswählen
sub suchen_und_ausblenden
dim document as object
dim dispatcher as object
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ToPoint"
args2(0).Value = "F1:F10000"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())
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
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 = 1
args1(9).Name = "SearchItem.SearchFlags"
args1(9).Value = 71680
args1(10).Name = "SearchItem.SearchString"
args1(10).Value = "^[0-9]{2,}|[4-9]|^0|0$|"
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 = 1
dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args1())
dispatcher.executeDispatch(document, ".uno:HideRow", "", 0, Array())
End Sub
Irgendwie müsste ich jetzt in dieser Zeile hinzufügen, dass auch leerzeichen betroffen sind
args1(10).Name = "SearchItem.SearchString"
args1(10).Value = "^[0-9]{2,}|[4-9]|^0|0$|"
wie lautet dafür der code ?
Re: FIlter programmieren
Verfasst: Di, 22.12.2009 11:38
von Karolus
Hallo
es gibt keinen funktionierenden Suchausdruck für leere Zellen, aber ich hab etwas anders dafür gefunden - probiere mal den Code unten.
Code: Alles auswählen
sub suchen_ausblenden
dim ocontroller as object
ocontroller = ThisComponent.CurrentController
with createUnoService("com.sun.star.frame.DispatchHelper")
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ToPoint"
args2(0).Value = "C1:C2000"
.executeDispatch(ocontroller, ".uno:GoToCell", "", 0, args2())
oController.select(oController.Selection.queryEmptyCells)
.executeDispatch(oController, ".uno:HideRow", "", 0, Array())
.executeDispatch(oController, ".uno:GoToCell", "", 0, args2())
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
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 = 1
args1(9).Name = "SearchItem.SearchFlags"
args1(9).Value = 71680
args1(10).Name = "SearchItem.SearchString"
args1(10).Value = "^[0-9]{2,}|[4-9]" 'geändert
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 = 1
.executeDispatch(oController, ".uno:ExecuteSearch", "", 0, args1())
.executeDispatch(oController, ".uno:HideRow", "", 0, Array())
end with
end sub
Gruß Karo
Re: FIlter programmieren
Verfasst: Di, 22.12.2009 12:02
von damuschong
Vielen dank

!!!! funktioniert super,
eine(hoffentlich) letzte frage hätt ich noch , wie bekomme ich zeilen mit negativen werten in der Spalte raus ?, danke