Makro auf anderes Tabellenblatt anwenden

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

Moderator: Moderatoren

12dis02424
*
Beiträge: 16
Registriert: Sa, 26.02.2011 02:20

Makro auf anderes Tabellenblatt anwenden

Beitrag von 12dis02424 »

Hallo,

ich benötige bitte Hilfe.
Ich glaube das diese Aufgabe für euch ganz einfach ist, ich verzweifel aber daran.
Ich habe schon ein Makro gefunden welche meine Wünsche fast erfüllt.
Nun soll dieses Makro aber auf das dritte Tabellenblatt angewendet werden, gestartet wird es aus dem ersten.
Und noch eine Bitte, es soll nicht der Standartdrucker verwendet werden sondern automatisch der dritte in der Drucker Liste.
Kann mir bitte jemand dabei helfen.

Code: Alles auswählen

sub Letzte_Zelle_Spalte_A_Drucken
odoc=thiscomponent
oSheet = ThisComponent.CurrentController.getActiveSheet()
oEndrow = 0
while oSheet.getcellbyPosition(0,oEndrow).string <> ""
oEndrow = oEndrow+1
wend
if oEndrow = 0 then 
end if
Dim oRanges(0) As New com.sun.star.table.CellRangeAddress
oRanges(0).Sheet = ActiveSheet()
oRanges(0).StartColumn = 0 : oRanges(0).StartRow = 0
oRanges(0).EndColumn = 4 : oRanges(0).EndRow = oEndrow -1
ThisComponent.CurrentController.getActiveSheet().setPrintAreas(oRanges())
ThisComponent.Print(Array())
End Sub
Vielen Dank für eure Hilfe im voraus.
Viele Grüße
Norman



Moderation,4: verschoben in BASIC Unterforum; Tippfehler Betreff korrigiert (für Suchfunktion)
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: Makro auf anderes Tabellblatt anwenden

Beitrag von Karolus »

Hallo
Die Antworten zu deinen Fragen findest du auf Michael Dannenhöfers Seite, zb.:
http://www.dannenhoefer.de/faqstarbasic ... l#Zweig157
Das dritte Tabellenblatt ? - thisComponent.sheets(2)

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
12dis02424
*
Beiträge: 16
Registriert: Sa, 26.02.2011 02:20

Re: Makro auf anderes Tabellblatt anwenden

Beitrag von 12dis02424 »

Hallo,
thisComponent.sheets(2) kenn ich und hab ich ausprobiert aber was genau muss ich in meinem Code verändern.
Habe versucht die Zeile oRanges(0).Sheet = ActiveSheet() in oRanges(0).Sheet = thisComponent.sheets(2)
umzuändern aber dann kommt eine Fehlermeldung.
Ich bin leider noch ganz am Anfang was OpenOffice Makros betrifft und versuche durch learning by doing vorwärts zukommen.

Danke
Norman
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: Makro auf anderes Tabellblatt anwenden

Beitrag von Karolus »

Hallo
Gibt die msgbox bei folgenden Code den "richtigen" Bereich aus ?

Code: Alles auswählen

Sub printerrange
odoc = thiscomponent
oSheet = odoc.sheets(2)
oZellRange = oSheet.getCellRangeByName("$A$1")
oCursor = oSheet.createCursorByRange(oZellRange)
ocursor.gotoendofusedarea(true )

msgbox ocursor.absolutename 

oAdress = oCursor.RangeAddress
Dim aDruckbereich(0)
aDruckbereich(0) = oAdress
oSheet.setPrintAreas(aDruckbereich())
End Sub
Gruß Karo
Zuletzt geändert von Karolus am So, 17.04.2011 22:26, insgesamt 1-mal geändert.
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
12dis02424
*
Beiträge: 16
Registriert: Sa, 26.02.2011 02:20

Re: Makro auf anderes Tabellenblatt anwenden

Beitrag von 12dis02424 »

Hallo Karo,

erst einmal vielen Dank.
Die msgbox gibt den richtigen Bereich aus, allerdings wurde im meinem Makro nicht der Bereich angegeben wenn in einer Zelle eine Wenn Funktion hinterlegt ist mit dem Ergebnis "" also kein Text bzw. Zahl.
Bekommst du das auch hin ?
Das wäre perfekt !

Vielen Dank
Norman
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: Makro auf anderes Tabellenblatt anwenden

Beitrag von Karolus »

Hallo
Nimm den Code von mir und entferne die msgbox-zeile.

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Antworten