Gruppierung ausblenden
Moderator: Moderatoren
-
- ******
- Beiträge: 690
- Registriert: Di, 13.02.2007 17:38
- Wohnort: Büttelborn
Gruppierung ausblenden
Hallo zusammen - ich wieder!
Ich bastele immer noch an meinen zweiseitigen Ausdrucken.
Kann man Gruppierungen per Makro ausblenden?
Ich weiß, dass man Spalten ausblenden kann, dann sind sie aber für den ungeübten Anwender weg. Daher möchte ich Spalten, die der Anwender eingeblendet hat, vor dem Druck wieder ausblenden. Sonst passt nicht alles auf eine Seite.
Ich habe versucht, das Ausblenden mit dem Makrorekorder aufzuzeichen, das klappt allerdings nicht, und auch in den gängigen Beschreibungen finde ich dazu nichts.
Ich bastele immer noch an meinen zweiseitigen Ausdrucken.
Kann man Gruppierungen per Makro ausblenden?
Ich weiß, dass man Spalten ausblenden kann, dann sind sie aber für den ungeübten Anwender weg. Daher möchte ich Spalten, die der Anwender eingeblendet hat, vor dem Druck wieder ausblenden. Sonst passt nicht alles auf eine Seite.
Ich habe versucht, das Ausblenden mit dem Makrorekorder aufzuzeichen, das klappt allerdings nicht, und auch in den gängigen Beschreibungen finde ich dazu nichts.
Re: Gruppierung ausblenden
Hallo Pit,
Du schon wieder
Eigentlich sprichst Du ja von zwei verschiedenen Dingen; Spalten Gruppierungen und einzelne Spallten Ein- Ausblenden.
Wenn Du aber weisst welche Spalten ausgedruckt werden sollen, und welche nicht, dann baue das doch einfach in dein Makro fest ein.
Angenommen Du hast Sinngemäß dir einen Druckbereich in der folgenden Form erstellt,
Oder habe ich dein Problem falsch verstanden?
Gruß
balu
Du schon wieder
Eigentlich sprichst Du ja von zwei verschiedenen Dingen; Spalten Gruppierungen und einzelne Spallten Ein- Ausblenden.
Wenn Du aber weisst welche Spalten ausgedruckt werden sollen, und welche nicht, dann baue das doch einfach in dein Makro fest ein.
Angenommen Du hast Sinngemäß dir einen Druckbereich in der folgenden Form erstellt,
wobei ganz klar "A1:L37" der eigentliche Druckbereich ist, dann kannst Du doch auch mehrere Druckbereiche pro Tabellenblatt zusammenhängend anlegen. Das würde dann ungefähr wie folgt aussehen.oDruckSheet.getCellRangeByName("A1:L37")
Oder aber.oDruckSheet.getCellRangeByName("A1:C9;F1:G9")
Habe ich jetzt nicht direkt getestet. Aber wenn ich von Hand über das Menü die Druckbereiche (siehe die Zelladressierung) so festlergen kann, dann kann man das doch auch bestimmt per Makro so machen.oDruckSheet.getCellRangeByName("A1:C9;F7:G9")
Oder habe ich dein Problem falsch verstanden?
Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.
wehr rächtschraipfähler findet khan si behalden
wehr rächtschraipfähler findet khan si behalden
-
- ******
- Beiträge: 690
- Registriert: Di, 13.02.2007 17:38
- Wohnort: Büttelborn
Re: Gruppierung ausblenden
Jau, das ginge sicher auch.
Danke
Allerdings würde mich ja schon interessieren, ob man auch Gliederungen ansprechen kann. Da das mit dem Makrorekoder nicht geht, geht es wohl auch mit Makros nicht.
Danke
Allerdings würde mich ja schon interessieren, ob man auch Gliederungen ansprechen kann. Da das mit dem Makrorekoder nicht geht, geht es wohl auch mit Makros nicht.
-
- ******
- Beiträge: 690
- Registriert: Di, 13.02.2007 17:38
- Wohnort: Büttelborn
Re: Gruppierung ausblenden
Lieber Balu,
ich habe mal versucht, Deinen Vorschlag einzubauen, das geht doch nicht so einfach wie gedacht.
Zuerst werden die Schülerdateien eingelesen und auf einer Übersichtseite dargestellt. Jenachdem wieviele Schülerdateien das sind, wird der Druckbereich für diese Seite angepasst. (Das hast Du mir mal beigebracht: "B1:BO"&n.)
Das sah bisher so aus:
Das müsste ich jetzt so lösen:
das geht aber nicht "Fehler in der Klammerschachtelung" - klar, da sind zu viele ".
ich habe mal versucht, Deinen Vorschlag einzubauen, das geht doch nicht so einfach wie gedacht.
Zuerst werden die Schülerdateien eingelesen und auf einer Übersichtseite dargestellt. Jenachdem wieviele Schülerdateien das sind, wird der Druckbereich für diese Seite angepasst. (Das hast Du mir mal beigebracht: "B1:BO"&n.)
Das sah bisher so aus:
Code: Alles auswählen
n=9
do while oSheet.getCellByPosition(1,n).string>""
n=n+1
loop
redim Druckbereiche(0)
DrBereich= oSheet.getCellRangeByName("B1:BO"&n).rangeAddress
Druckbereiche(0)=DrBereich
Code: Alles auswählen
redim Druckbereiche(0)
DrBereich= oSheet.getCellRangeByName("B1:K"&n;"R1:R"&n;"Y1:Y"&n;"AF:BO"&n).rangeAddress
Re: Gruppierung ausblenden
Hoia Pit,
Weisst Du wie man selber viel lernen kann?
Nimm beispielsweise XRAY!
Und das empfehle ich dir jetzt wieder einmal.
Ich arbeite nämlich nach folgendem Schema. Immer hilft es wohl auch nicht, aber es kann sehr nützlich sein.
Untersuche das Tabellenblatt.
Du weisst schon: XRAY thiscomponent.scheet(0) {oder so ähnlich}
Du bekomst eine Ellenlange Liste von XRAY ausgegeben. Diese kopierst Du beispielsweise in ein anderes leeres Tabellenblatt.
Dann änderst Du in dem 1. Blatt irgendeine Kleinigkeit, z.B. eine Spate ausblenden.
Dann wieder XRAY aufrufen, wie vorhin, und wieder alles kopieren und in dem einen Blatt mit der ersten Liste einfügen. Natürlich neben der 1. Liste aber Startposition die gleiche Zeile.
Und jetzt wirds gar Luschdisch
Denn nun vergleichst Du Zeile für Zeile beide Listen miteinander und schaust wo sich was geändert hat.
Wenn Du auf den ersten Blick nix gefunden hast, wähle in XRAY mal alles nacheinander aus was in irgendeiner Form mit "Colum" (oder so ähnlich) zu tun hat. Wenn sich da irgendwo etwas geändert hat, bist Du schon mal einen Schritt weiter, oder aber auch nicht.
Ist wohl eine Mühsamme Arbeit, aber so lernst Du mehr als immer nur vorgekaute Sachen irgendwie umzumodeln. Und solltest Du dann noch immer nicht weiterkommen, .... tja, Du weisst wo wir sind.
Muss jetzt wech.
Gruß
balu
Der Makrorekorder kann halt nicht alles. Also ist er bestimmt nicht "Das Maß aller Dinge".Allerdings würde mich ja schon interessieren, ob man auch Gliederungen ansprechen kann. Da das mit dem Makrorekoder nicht geht, geht es wohl auch mit Makros nicht.
Weisst Du wie man selber viel lernen kann?
Nimm beispielsweise XRAY!
Und das empfehle ich dir jetzt wieder einmal.
Ich arbeite nämlich nach folgendem Schema. Immer hilft es wohl auch nicht, aber es kann sehr nützlich sein.
Untersuche das Tabellenblatt.
Du weisst schon: XRAY thiscomponent.scheet(0) {oder so ähnlich}
Du bekomst eine Ellenlange Liste von XRAY ausgegeben. Diese kopierst Du beispielsweise in ein anderes leeres Tabellenblatt.
Dann änderst Du in dem 1. Blatt irgendeine Kleinigkeit, z.B. eine Spate ausblenden.
Dann wieder XRAY aufrufen, wie vorhin, und wieder alles kopieren und in dem einen Blatt mit der ersten Liste einfügen. Natürlich neben der 1. Liste aber Startposition die gleiche Zeile.
Und jetzt wirds gar Luschdisch
Denn nun vergleichst Du Zeile für Zeile beide Listen miteinander und schaust wo sich was geändert hat.
Wenn Du auf den ersten Blick nix gefunden hast, wähle in XRAY mal alles nacheinander aus was in irgendeiner Form mit "Colum" (oder so ähnlich) zu tun hat. Wenn sich da irgendwo etwas geändert hat, bist Du schon mal einen Schritt weiter, oder aber auch nicht.
Ist wohl eine Mühsamme Arbeit, aber so lernst Du mehr als immer nur vorgekaute Sachen irgendwie umzumodeln. Und solltest Du dann noch immer nicht weiterkommen, .... tja, Du weisst wo wir sind.
Muss jetzt wech.
Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.
wehr rächtschraipfähler findet khan si behalden
wehr rächtschraipfähler findet khan si behalden
Re: Gruppierung ausblenden
Hallo,
funktioniert nicht, da die Methode .getCellRangeByName() nur einen Zellbereich als Argument akzeptiert.
Soweit ich es bisher untersucht habe, ist es per Makro nicht möglich herauszufinden, welche Spalten gruppiert sind. Wenn du allerdings weißt, welche Spalten gruppiert sind, kannst du darauf zugreifen. Hierzu gibt es z. B. die Methode .hideDetail() die ein rangeaddress-Objekt als Argument benötigt.
Sollten also z. B. auf dem 1. Tabellenblatt die Spalten D bis E bzw. H bis J gruppiert sein:
Code: Alles auswählen
oSheet.getCellRangeByName("B1:K"&n;"R1:R"&n;"Y1:Y"&n;"AF:BO"&n).rangeAddress
Soweit ich es bisher untersucht habe, ist es per Makro nicht möglich herauszufinden, welche Spalten gruppiert sind. Wenn du allerdings weißt, welche Spalten gruppiert sind, kannst du darauf zugreifen. Hierzu gibt es z. B. die Methode .hideDetail() die ein rangeaddress-Objekt als Argument benötigt.
Sollten also z. B. auf dem 1. Tabellenblatt die Spalten D bis E bzw. H bis J gruppiert sein:
Code: Alles auswählen
Sub gliederung_ein_aus
oDoc=ThisComponent
'1. Tabelle
oTab=odoc.sheets(0)
'Gliederungsbereiche (wichtig sind nur die Spaltenbezeichnungen)
aBereiche=array("D1:E1","H1:J1")
For i=0 To ubound(aBereiche)
'Ausblenden
oTab.hidedetail(oTab.getCellRangeByName(aBereiche(i)).RangeAddress)
'Einblenden
'oTab.showdetail(oTab.getCellRangeByName(aBereiche(i)).RangeAddress)
Next
End Sub
Gruß,
mikeleb
mikeleb
-
- ******
- Beiträge: 690
- Registriert: Di, 13.02.2007 17:38
- Wohnort: Büttelborn
Re: Gruppierung ausblenden
Bärenstark! Prima! Danke! Das war's! Funktioniert!
Re: Gruppierung ausblenden
Hoi Pit,
Aber es geht schon in gewisser Weise, blos halt anders.
In der deutschen Version von Andrew {OOME_3_0_deutsch_Stand_20022018.pdf} auf Seite 354 ist folgendes Listing zu finden.
(hab den code nur etwas übersichtlicher gestaltet)
Wie zu sehen, sind da zwei unterschiedlch große Zellbereiche für den Druckbereich defeniert worden. Also anstatt mit '.getCellRangeByName()' wird halt mit RangeAddress gearbeitet, welches ein Struct ist.
Klar, es ist ein wenig mehr zu tippen, aber was nicht direkt durch die Vordertür reingeht, nimmt halt den Lieferanteneingang. Hauptsache es kommt überhaupt ins Haus.
Gruß
balu
Stimmt leider.ich habe mal versucht, Deinen Vorschlag einzubauen, das geht doch nicht so einfach wie gedacht.
Aber es geht schon in gewisser Weise, blos halt anders.
In der deutschen Version von Andrew {OOME_3_0_deutsch_Stand_20022018.pdf} auf Seite 354 ist folgendes Listing zu finden.
Code: Alles auswählen
' Listing 332. Legt mehrere Druckbereiche in einem Tabellendokument fest und druckt sie aus.
Sub PrintSpreadsheetAreas
Dim oRanges(1) As New com.sun.star.table.CellRangeAddress 'Zellbereiche
oRanges(0).Sheet = 0
oRanges(0).StartColumn = 0
oRanges(0).StartRow = 0 'A1
oRanges(0).EndColumn = 3
oRanges(0).EndRow = 4 'D5
oRanges(1).Sheet = 0
oRanges(1).StartColumn = 0
oRanges(1).StartRow = 8 'A9
oRanges(1).EndColumn = 3
oRanges(1).EndRow = 10 'D11
ThisComponent.CurrentController.getActiveSheet().setPrintAreas(oRanges())
ThisComponent.print(Array())
End Sub
Wie zu sehen, sind da zwei unterschiedlch große Zellbereiche für den Druckbereich defeniert worden. Also anstatt mit '.getCellRangeByName()' wird halt mit RangeAddress gearbeitet, welches ein Struct ist.
Klar, es ist ein wenig mehr zu tippen, aber was nicht direkt durch die Vordertür reingeht, nimmt halt den Lieferanteneingang. Hauptsache es kommt überhaupt ins Haus.
Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.
wehr rächtschraipfähler findet khan si behalden
wehr rächtschraipfähler findet khan si behalden
-
- ******
- Beiträge: 690
- Registriert: Di, 13.02.2007 17:38
- Wohnort: Büttelborn
Re: Gruppierung ausblenden
Okay, probiere ich auch nochmal aus. Sind das zwei Druckbereiche? Ich habe auch noch etwas recherchiert und wieder mal gelesen, dass verschiedene Druckbereiche auch grundsätzlich auf verschiedenen Seiten ausgedruckt werden - und das hilft mir nicht weiter.
Grüße
Grüße