Filterkriterien per Makro setzen II

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

Moderator: Moderatoren

Lupo121205
**
Beiträge: 32
Registriert: Mi, 05.12.2012 17:21

Filterkriterien per Makro setzen II

Beitrag von Lupo121205 »

Hi, mit dem folgenden code aktiviere ich einen vorher festgelegten Spezialfilter

Code: Alles auswählen

dispatcher.executeDispatch(document, ".uno:DataFilterSpecialFilter", "", 0, Array())
dispatcher.executeDispatch(document, ".uno:FilterExecute", "", 0, Array())
Ich muß nur noch [return] oder [ok] drücken und der Filter wird aktiviert.
filter2.jpg
filter2.jpg (64.31 KiB) 2446 mal betrachtet
Damit kann ich zwar gut leben, möchte aber zur Abrundung auch diesen letzten manuellen Schritt automatisch erfolgen lassen.

Weiß jemand, was an meinem Code noch fehlt?
Gruss und herzlichen Dank für den bisherigen Beistand
Lupo
Hiker
******
Beiträge: 590
Registriert: Mo, 08.09.2014 21:34
Wohnort: Berlin

Re: Filterkriterien per Makro setzen II

Beitrag von Hiker »

Hallo,

ich nutze folgenden Code der aufgerufen wird, wenn sich die Zelle ändert, in der das Filterkriterium steht.

Die Tabelle Filterquelle enthält die zu filternden Daten - wo ich sonst auf Bereich-aktualisieren im Menü gehen würde,
das musst Du dann anpassen.
Die letzten beiden Zeilen springen dann nur an die Stelle, wo ich weiterarbeiten will,
kannst Du löschen oder anpassen.

Code: Alles auswählen

sub Refresh_Filter_Ranges
REM Quelle F3KTotal / LibreOffice-Forum / 30.12.17 / Abrechnung mit Datumskriterium erstellen
REM Angepasst /JB
    oController = thisComponent.CurrentController
    oStartCell = thisComponent.Sheets.getbyName("Filterquelle").getCellByPosition(1,1)
    oController.Select(oStartCell)
    document   = oController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
    dispatcher.executeDispatch(document, ".uno:DataAreaRefresh", "", 0, Array())
    
    oStartCell = thisComponent.Sheets.getbyName("Auswertung").getCellByPosition(1,1)
    oController.Select(oStartCell)
end sub
Mfg, Jörn

PS: Erster Teil der Geschichte ist hier:
https://de.openoffice.info/viewtopic.php?f=18&t=74946
Libre Office 6.3.1 (Win 10 Pro) / Libre Office 6.0.7 (Win8.1 Pro, Win 7 Pro) / AOO (Win 7)
Lupo121205
**
Beiträge: 32
Registriert: Mi, 05.12.2012 17:21

[gelöst] Re: Filterkriterien per Makro setzen II

Beitrag von Lupo121205 »

Hallo Jörn,
möchte doch noch ein positives feedback zu Deinem Code machen.
Hat mir keine Ruhe gelassen - und nachdem ich den Code so halbwegs begriffen haben, ist er als letztes I-Tüpfelchen in meine Anwendung eingeflossen und hat sich dort bewährt. Der Unterschied bestand im wesentlichen in der Zeile

Code: Alles auswählen

dispatcher.executeDispatch(document, ".uno:DataAreaRefresh", "", 0, Array())
Hiker
******
Beiträge: 590
Registriert: Mo, 08.09.2014 21:34
Wohnort: Berlin

Re: Filterkriterien per Makro setzen II

Beitrag von Hiker »

Hallo,

schön dass Du es verwenden könntest. Ich hab das damals nur kurz in der Mittagspause rüberkopiert.

Der Unterschied im Ansatz ist, das Du ursprünglich den Filter neu setzen willst, während der von mir genannte Code nur "Bereich aktualisieren" aufruft, was ausreicht um den Filter zu aktualisieren, wenn man den Cursor in den Quellbereich gesetzt hat - dasselbe, was ich ja auch schon als manuelles Verfahren beschrieben hatte.

Mfg, Jörn
Libre Office 6.3.1 (Win 10 Pro) / Libre Office 6.0.7 (Win8.1 Pro, Win 7 Pro) / AOO (Win 7)
Antworten