Gruppierung ausblenden

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

Moderator: Moderatoren

erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

Gruppierung ausblenden

Beitrag von erikafuchs »

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.
Benutzeravatar
balu
********
Beiträge: 3810
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Gruppierung ausblenden

Beitrag von balu »

Hallo Pit,

Du schon wieder :lol:

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,
oDruckSheet.getCellRangeByName("A1:L37")
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:C9;F1:G9")
Oder aber.
oDruckSheet.getCellRangeByName("A1:C9;F7: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.

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 :D
erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

Re: Gruppierung ausblenden

Beitrag von erikafuchs »

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.
erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

Re: Gruppierung ausblenden

Beitrag von erikafuchs »

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:

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	
Das müsste ich jetzt so lösen:

Code: Alles auswählen

		
		redim Druckbereiche(0)
		DrBereich= oSheet.getCellRangeByName("B1:K"&n;"R1:R"&n;"Y1:Y"&n;"AF:BO"&n).rangeAddress
 
das geht aber nicht "Fehler in der Klammerschachtelung" - klar, da sind zu viele ".
Benutzeravatar
balu
********
Beiträge: 3810
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Gruppierung ausblenden

Beitrag von balu »

Hoia Pit,
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.
Der Makrorekorder kann halt nicht alles. Also ist er bestimmt nicht "Das Maß aller Dinge".

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 :D
mikeleb
*******
Beiträge: 1316
Registriert: Fr, 09.12.2011 16:50

Re: Gruppierung ausblenden

Beitrag von mikeleb »

Hallo,

Code: Alles auswählen

oSheet.getCellRangeByName("B1:K"&n;"R1:R"&n;"Y1:Y"&n;"AF:BO"&n).rangeAddress
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

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
erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

Re: Gruppierung ausblenden

Beitrag von erikafuchs »

Bärenstark! Prima! Danke! Das war's! Funktioniert!
Benutzeravatar
balu
********
Beiträge: 3810
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Gruppierung ausblenden

Beitrag von balu »

Hoi Pit,
ich habe mal versucht, Deinen Vorschlag einzubauen, das geht doch nicht so einfach wie gedacht.
Stimmt leider.
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
(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. :lol:



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 :D
erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

Re: Gruppierung ausblenden

Beitrag von erikafuchs »

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
Antworten