Makro: Filter setzen -> PDF exportieren -> Filter wieder löschen

Hallo Community,

ich habe ein Makro, das genau das macht (Filter setzen → PDF exportieren → Filter wieder löschen) und das auch tadellos funktioniert.

Dasselbe bräuchte ich auf einem anderen (identischen) Tabellenblatt in der selben Datei. Leider funktioniert dort das Löschen des Filters am Ende des Makros nicht, bis dahin aber alles. Habe den selben Code verwendet (nur den Namen des Tabellenblattes im Code geändert).

Vielleicht hat einer der Kundigen eine Idee dazu? Danke für eure Zeit! Ich bin leider Programmieranfänger und finde den Fehler nicht.

Hier das Makro:

sub rechnung_export_pdf

'Filter setzen

Dok = ThisComponent
Controller = Dok.CurrentController
Blatt = Controller.ActiveSheet
Cursor =Blatt.createCursor()
Cursor.GotoEndofUsedArea(True)
EndZeile = Cursor.getRangeAddress.EndRow
For I = 0 To 40
Zelle = Blatt.getCellByPosition(0,I)
Wert = Zelle.String
If Wert = "x"  then
	Zeile = Blatt.rows(I)
	Zeile.IsVisible = False
End If
next

'Export PDF

dim args2(1) as new com.sun.star.beans.PropertyValue
dim Arg(0) as new com.sun.star.beans.PropertyValue
Doc   = ThisComponent
Controller = Doc.CurrentController
Sheet = Doc.Sheets.getByName("Print")
CellRange = Sheet.getCellRangeByName("$B$1:$F$37")
Controller.select(CellRange)
Cell = Sheet.getCellByPosition(6,0)

Arg(0).Name = "Selection"
Arg(0).Value = CellRange

args2(0).Name = "FilterName"
args2(0).Value = "calc_pdf_Export"
args2(1).Name = "FilterData"
args2(1).Value = Arg()
Doc.storeToURL("file:///Users/wolfH/Desktop/"& Cell.getString()&".pdf",args2())

'Filter loeschen

odatabaserange = thiscomponent.databaseranges(0)
oFilterDescriptor = odatabaserange.FilterDescriptor
oFilterDescriptor.setFilterFields(array())
odatabaserange.referredcells.Rows.Isvisible = True
odatabaserange.refresh

end sub

Die Variable “Blatt” verweist auf ActiveSheet, also meines Wissens das aktuell ausgewählte Tabellenblatt. Startest Du eventuell das Makro einmal mit Inhalt des Blattes und willst das Ganze dann von dort aus auch für ein andere Blatt starten?

Hallo Robert,
danke fürs Mitdenken!
Nein, ich habe 2 Makros, je eines pro Blatt und starte das jeweilige Makro vom dazugehörigen Blatt aus. Es funktioniert ja auch, nur das Filter löschen am Ende nicht. Und das auch nur beim zweiten Blatt. Beim ersten geht alles.

Warum soll thiscomponent.databaseranges(0)
auf dem zweiten Blatt etwas anderes liefern als auf dem ersten?
Ich kenne die Struktur nicht gut genug, aber in beiden vorherigen Abschnitten gehst Du von ThisComponent weiter zum ActiveSheet nur beim Löschen scheinst Du anzunehmen, dass Du mit databaseranges(0) direkt auf dem zweiten Blatt arbeitest.

Danke! Wie sollte der Code dann bei “Filter löschen” aussehen? Ich arbeite immer am jeweiligen Blatt und starte das jeweilige Makro von dort aus. Wegen Struktur: Würde es helfen, wenn ich die Datei hier hochlade?