Moin,
ich habe folgendes problem:
ich habe 3 Tabellenblätter (1=Ansicht,2=diagramm1,3=diagramm2)
nun wähle ich auf der Ansicht Diagram1 aus, ein Makro blendet dadurch Tabelle 3 aus, nun soll der Druckbereich sich allerdings auch ändern. Tabelle1 ist immer im Druckbereich die anderen am liebsten nach auswahl... jedoch habe ich keine ahnung wie der Befehl für "Druckbereich hinzufügen" ist. Weiss das jemand?
Gruß
Paule
Makro für Druckbereich?
Moderator: Moderatoren
Hey Paule,
Das per Makro zu erledigen, ist nicht ganz einfach. Druckbereiche werden in einem Array gespeichert, dort musst du dann die jeweiligen hinzufügen und rausnehmen.
Also, nehmen wir die drei Druckbereiche:
Tabelle1: (Ansicht) A1 bis D5
Tabelle2: (diagramm1) a1 bis g50
Tabelle3: (diagramm2) b2 bis h40
Wenn du einen Druckbereich bestimmst, musst du immer alle zu druckende Bereiche eintragen. Ist kein Druckbereich bestimmt (Array leer) wird alles gedruckt.
Hier ein Makro für die beiden ersten Bereiche:
Die anderen Bereiche werden analog zugewiesen. Die Methode setPrintAreas() überschreibt alle schon vorhandenen Druckbereiche!
Viele Grüße
Thomas
Ja, ich...wie der Befehl für "Druckbereich hinzufügen" ist. Weiss das jemand?

Das per Makro zu erledigen, ist nicht ganz einfach. Druckbereiche werden in einem Array gespeichert, dort musst du dann die jeweiligen hinzufügen und rausnehmen.
Also, nehmen wir die drei Druckbereiche:
Tabelle1: (Ansicht) A1 bis D5
Tabelle2: (diagramm1) a1 bis g50
Tabelle3: (diagramm2) b2 bis h40
Wenn du einen Druckbereich bestimmst, musst du immer alle zu druckende Bereiche eintragen. Ist kein Druckbereich bestimmt (Array leer) wird alles gedruckt.
Hier ein Makro für die beiden ersten Bereiche:
Code: Alles auswählen
sub Druckbereich1_festlegen
Dim aDruckbereiche(1) 'Array mit 2 Elementen
oDoc = ThisComponent
oSheet1 = oDoc.getSheets().getByName("Ansicht")
oSheet2 = oDoc.getSheets().getByName("diagramm1")
oDruckBereich1 = oSheet1.getCellRangeByName("A1:D5").rangeAddress
oDruckBereich2 = oSheet2.getCellRangeByName("A1:G50").rangeAddress
aDruckbereiche(0) = oDruckbereich1
aDruckbereiche(1) = oDruckbereich2
oSheet1.setPrintAreas(aDruckbereiche())
REM jetzt kannst du die Datei drucken
REM odoc. print() 'evt. noch Argumente übergeben
end sub
Viele Grüße
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
hey tocxitom
Danke für deine Antwort. Jedoch funtzt :
das nicht... beide Druckbereiche sind auf einer Seite! ("Ansicht")
kann das sein das das an meiner Version liegt? hab OOo RC2 auf xp Home Edition.
viele grüße
Paule[/quote]
Danke für deine Antwort. Jedoch funtzt :
Code: Alles auswählen
sub Druckbereich1_festlegen
Dim aDruckbereiche(1) 'Array mit 2 Elementen
oDoc = ThisComponent
oSheet1 = oDoc.getSheets().getByName("Ansicht")
oSheet2 = oDoc.getSheets().getByName("diagramm1")
oDruckBereich1 = oSheet1.getCellRangeByName("A1:D5").rangeAddress
oDruckBereich2 = oSheet2.getCellRangeByName("A1:G50").rangeAddress
aDruckbereiche(0) = oDruckbereich1
aDruckbereiche(1) = oDruckbereich2
oSheet1.setPrintAreas(aDruckbereiche())
REM jetzt kannst du die Datei drucken
REM odoc. print() 'evt. noch Argumente übergeben
end sub
kann das sein das das an meiner Version liegt? hab OOo RC2 auf xp Home Edition.
viele grüße
Paule[/quote]
Hey Paule,
Sorry, hab es vorher nicht ausprobiert. Druckbereiche werden pro Tabelle definiert, du brauchst also zwei unabhängige Arrays mit Druckbereichen, einmal für Sheet1 und einmal für Sheet2. Und dann brauchst du eben auch zwei Aufrufe:
oSheet1.setPrintAreas()
und
oSheet2.setPrintAreas()
Der Code diente so ein bischen, das Prinzip zu erläutern. Ich hoffe, es hilft jetzt.
Gruss
Thomas
Nein. hab ich auchkann das sein das das an meiner Version liegt? hab OOo RC2 auf xp Home Edition.

Sorry, hab es vorher nicht ausprobiert. Druckbereiche werden pro Tabelle definiert, du brauchst also zwei unabhängige Arrays mit Druckbereichen, einmal für Sheet1 und einmal für Sheet2. Und dann brauchst du eben auch zwei Aufrufe:
oSheet1.setPrintAreas()
und
oSheet2.setPrintAreas()
Der Code diente so ein bischen, das Prinzip zu erläutern. Ich hoffe, es hilft jetzt.
Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic