Submitted by Erik Wegner
on
Body
Beschreibung
In einer Datei gibt es ein Blatt mit einer Liste. Diese Liste soll durch den Aufruf Daten, Spezialfilter gefiltert werden. Das Filterkriterium soll dynamisch aus einer Zelle gelesen werden.
Quellcode
sub do_specialfilter 'structure for address dim outputaddr as new com.sun.star.table.CellAddress 'the source range of data to be filtered xfilter = thiscomponent.sheets(1).getcellrangebyname("A1:G32000") 'the filter rules are set up in this xfilterDesc=xFilter.createFilterDescriptor(true) 'we take the value each row is to be compared with from a special location qSheet = ThisComponent.Sheets(0) filterWert$ = qSheet.getCellRangeByName("A2").getValue() call clearCells 'Clear output cells outputaddr.sheet = 0 'set up output location as a cell address NOT a range outputaddr.column=0 ' "A4" - col 0 outputaddr.row=3 ' "A4" - row 3 ' The filter specs are set up as an array (one element in this example) set the dimension accordingly dim aFilterFields(0) as new com.sun.star.sheet.TableFilterField ' set the filter rules up (one element per column) aFilterFields(0).Field = 3 ' field to be compared (starts at zero) 'the following lines for numeric comparison 'aFilterFields(0).IsNumeric = true ' numeric comparison 'aFilterFields(0).Operator = com.sun.star.sheet.FilterOperator.LESS_EQUAL 'aFilterFields(0).NumericValue = filterWert ' value each row is to be compared with 'these lines for string comparison aFilterFields(0).IsNumeric = false ' character (string) comparison aFilterFields(0).Operator = com.sun.star.sheet.FilterOperator.LESS_EQUAL aFilterFields(0).StringValue = filterWert$ ' value each row is to be compared with ' set the filter description up xFilterDesc.setFilterFields(aFilterFields()) 'set the filter rules by assigning the array of fields xfilterDesc.ContainsHeader=true 'there is a header line for the range to be filtered xfilterDesc.CopyOutputData=true ' output to a separate location xfilterDesc.OutputPosition=outputaddr ' this is the output location xFilter.filter(xFilterDesc) 'do the filter operation end sub sub clearCells 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(0) as new com.sun.star.beans.PropertyValue args1(0).Name = "ToPoint" args1(0).Value = "Auswahl.$A$4:$A$32000" 'Auswahl is the sheet's name dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1()) rem ---------------------------------------------------------------------- rem dispatcher.executeDispatch(document, ".uno:Delete", "", 0, Array()) rem ---------------------------------------------------------------------- dim args3(0) as new com.sun.star.beans.PropertyValue args3(0).Name = "Flags" args3(0).Value = "R" dispatcher.executeDispatch(document, ".uno:DeleteCell", "", 0, args3()) end sub