Daten filtern und kopieren

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

Moderator: Moderatoren

Nopsi
Beiträge: 8
Registriert: Di, 09.06.2020 13:23

Daten filtern und kopieren

Beitrag von Nopsi »

Hallo zusammen
Ich versuche gerade mein Makro zum laufen zu bringen. In Excel habe ich schon ein funktionierendes Makro dafür aber für Libre office brauche ich noch eins. Wenn ich das Makro starte läuft die eingabe des Filterbegriff einwandfrei, aber danach passiert einfach gar nix. sieht jemand meinen Fehler?

Code: Alles auswählen

Option Explicit

sub tst()
Dim d1Doc 'die geladene Komponente
Dim d2Doc 'die geladene Komponente
Dim d3Doc 'die geladene Komponente
Dim Arg() 'ein leeres Array der Argumenteliste
Dim sText As String
Dim oDatenSheet 
Dim oBereichAlleDaten 
Dim oFilterBeschreib 
Dim oFilterFeld
Dim oZielZelle 

Dim sURL as String, Sframe As String, lSearch As Long

d1Doc=StarDesktop.loadComponentFromURL (ConvertToURL("V:\user\folder\mappe1.ods"), "_default", 63, Arg())
d2Doc=StarDesktop.loadComponentFromURL (ConvertToURL("V:\user\folder\mappe2.ods"), "_default", 63, Arg())
d3Doc=StarDesktop.loadComponentFromURL (ConvertToURL("V:\user\folder\mappe3.ods"), "_default", 63, Arg())

sText = InputBox("Textsuche:", "Suche", "")

oDatenSheet = d3Doc.Sheets().getByName( "BERECHNUNG" )
' Bereich
oBereichAlleDaten = oDatenSheet.getCellRangeByName( "A:V" )
'(2) FILTER erstellen
oFilterBeschreib = oBereichAlleDaten.createFilterDescriptor ( TRUE ) 
'
oFilterFeld = createUnoStruct( "com.sun.star.sheet.TableFilterField" )
With oFilterFeld
 .Field = 3 ' Spalte D
 .Operator = com.sun.star.sheet.FilterOperator.EQUAL
 .StringValue = sText
End With
' Feld auf Filter anwenden
oFilterBeschreib.setFilterFields( Array( oFilterFeld ) ) 
' (4) Ausgabebereich des Filters festlegen 
oFilterBeschreib.CopyOutputData = TRUE
'----><> Startzelle des Ausgabebereichs
oZielZelle = d1Doc.Sheets().getByName( "BERECHNUNG" ).getCellByPosition( 4 , 6 ) ' Spalte/Zeile 
' Zieladresse zuweisen
oFilterBeschreib.OutputPosition = oZielZelle.CellAddress
' Filter auf Datenbereich anwenden
oBereichAlleDaten.filter( oFilterBeschreib ) 

end sub
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Daten filtern und kopieren

Beitrag von F3K Total »

Moin,
funzt bei mir, wenn ich den Filterbereich statt mit

Code: Alles auswählen

oBereichAlleDaten = oDatenSheet.getCellRangeByName( "A:V" )
eher etwas kleiner

Code: Alles auswählen

oBereichAlleDaten = oDatenSheet.getCellRangeByName( "A1:V10000" )
ansetze.
Gruß R
Nopsi
Beiträge: 8
Registriert: Di, 09.06.2020 13:23

Re: Daten filtern und kopieren

Beitrag von Nopsi »

Danke für die Hilfe :)
Antworten