Makro für Druckbereich?

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

Paule
****
Beiträge: 113
Registriert: Do, 22.09.2005 16:26
Wohnort: Schleswig

Makro für Druckbereich?

Beitrag von Paule »

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
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey Paule,
...wie der Befehl für "Druckbereich hinzufügen" ist. Weiss das jemand?
Ja, ich :wink:
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
Die anderen Bereiche werden analog zugewiesen. Die Methode setPrintAreas() überschreibt alle schon vorhandenen Druckbereiche!

Viele Grüße
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Paule
****
Beiträge: 113
Registriert: Do, 22.09.2005 16:26
Wohnort: Schleswig

Beitrag von Paule »

hey tocxitom

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
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]
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey Paule,
kann das sein das das an meiner Version liegt? hab OOo RC2 auf xp Home Edition.
Nein. hab ich auch :wink:

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
Paule
****
Beiträge: 113
Registriert: Do, 22.09.2005 16:26
Wohnort: Schleswig

Beitrag von Paule »

oh ja
stimmt... hab ich wohl übersehen :roll:
jetzt klappt alles danke

gruß
paule[/code]
Antworten