CALC: Filter und Spezailfilter

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

Moderator: Moderatoren

unwissender
Beiträge: 9
Registriert: Sa, 07.10.2006 13:31

CALC: Filter und Spezailfilter

Beitrag von unwissender »

Hallo ihr Wissenden,

ich bin gerade daran, ein Makro aus VBA in OO Basic zu überführen.
Es macht eigentlich nicht viel außer Dateien öffnen, einige Zeilen in eine neue Datei kopieren und diese dann unter neuem Namen abspeichern.

Auch wenn ich es noch nicht versucht habe, denke ich, dass ich das öffnen und speichern mit der spärlichen Literaturgrundlage hinbekomme.

Jedoch wird die Zellauswahl per Filter sowohl Autofilter als auch Spezialfilter getroffen.

Leider habe ich noch keine für mich verständliche Beispiele für
- den Autofilter
- und den Spezialfilter gefunden

und hoffe daher auf euch.

Kann mir jemand zwei kleine Beispiele geben
oder
mir einen Hinweis geben, in welchem Buch / Link ich sowas finden kann.

Achja auch wenn das UNO Modell sicher seine Vorteile hat, so wäre ich dankbar wenn es auch ohne ginge.

Ich bedanke mich schon mal im Voraus.
Dankender Gruß
Jens
kannenklaus
*****
Beiträge: 319
Registriert: Mi, 14.12.2005 08:08
Wohnort: freising - oder dort, wo das bier herkommt

Beitrag von kannenklaus »

hallo jens,


hier gibt es basic-beispiele von rene martin, die auch einen autofilter verwenden und in seinem buch erschienen "Openoffice-Programierung" sind.

http://www.compurem.de/ooo/Buchbeispiele.zip

in der datei tabelle.sxc findest du im modul "Liste" folgendes beispiel:

Code: Alles auswählen

'erstellt von Rene Martin
Sub Filter
	dim objDatei As object
	dim objBlatt As Object
	dim objQuellbereich As Object
	dim objFilterbereich As Object
	dim objZielbereich As Object
	dim objFilter As Object
	dim sF(0) as New com.sun.star.sheet.TableFilterField

	objdatei = 	ThisComponent
	objBlatt = objdatei.Sheets.getByName("IchBinDerNeue")
    objQuellbereich = objblatt.getCellRangeByName("A1:C7")
    objFilterbereich  = objBlatt.getCellRangeByName("A18:A19")
	objZielbereich = objBlatt.getCellRangeByName("A22")
   
	objFilter = objBlatt.createFilterDescriptor(True)

	sF(0).Field = 2
	sF(0).IsNumeric = False
	sF(0).Operator = com.sun.star.sheet.FilterOperator.EQUAL
	sF(0).StringValue = "München"


	With objFilter
		.ContainsHeader = True
		.UseRegularExpressions = False
		.IsCaseSensitive = True
		.FilterFields = objFilterbereich
		.setFilterFields(sF())
		.CopyOutputData = True
		.SaveOutputPosition = False
		.OutputPosition = objZielbereich.getRangeAddress()
	End With
	
	objQuellbereich.Filter(sF())
	
End Sub
grüße

klaus
unwissender
Beiträge: 9
Registriert: Sa, 07.10.2006 13:31

Beitrag von unwissender »

Hallo Klaus,

vielen Dank für deine Antwort.
Leider funktioniert der Code bei mir nicht.
Habe auch die Beispieldatei aus dem Buch genommen, doch leider das gleiche Ergebnis.

OpenOffice schleißt mit einem unerwarteten Fehler und das wars.

Leider habe ich keine Ahnung woran das liegen könnte ??

Du / Ihr vielleicht ???

Vielen Dank und einen guten Rutsch ins neue Jahr.

Grüße
Jens
Antworten