CALC: Drucken Problem

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

Moderator: Moderatoren

Birbey
Beiträge: 5
Registriert: Do, 21.03.2013 00:53

CALC: Drucken Problem

Beitrag von Birbey »

Moderation,4: Betreff angepasst


Hallo,

ich habe eine Datei mit drei Tabellen.

In die erste Tabelle werden die Daten eingegeben, die automatisch in bestimmte Zellen in der Tabelle zwei und drei eingefügt werden.

Nun möchte ich aber, dass die nur die Tabelle zwei und drei ausgedruckt wird.

Button mit Makros wurde erstellt. Tabelle zwei wird Problemlos gedruckt. Tabelle drei versucht er zu drucken, hängt es sich aber
auf der Seite zwei auf. Genauer gesagt, er druckt die erste Seite auch nicht aus. Es bleibt das Drucksymbol hängen. Erst wenn man
auf abbrechen geht kann man weiter machen.

Druckbereiche wurde festgelegt. Problem löst sich nicht.

Code: Alles auswählen

sub Drucken
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Nr"
args1(0).Value = 2

dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args1())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:PrintDefault", "", 0, Array())

rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "Nr"
args3(0).Value = 3

dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args3())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:PrintDefault", "", 0, Array())


end sub

[​code]…[​/code]-Tags eingefügt. Thema verschoben nach OOo Basic und Java, wo alle Themen zur Basic-Programmierung hingehören.—lorbass, Mod
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Makros Problem

Beitrag von F3K Total »

Hi,
versuch mal dieses Makro:

Code: Alles auswählen

Sub print_multiple_tables
    oRanges = thiscomponent.createInstance("com.sun.star.sheet.SheetCellRanges")
    odoc = thiscomponent
    osheets = odoc.sheets
    'Tabelle2 zufügen
    osheet = osheets.getbyname("Tabelle2")
    oRange = osheet.getCellRangeByName("A1")
    oRanges.addRangeAddress(oRange.RangeAddress, True)
    'Tabelle3 zufügen
    osheet = osheets.getbyname("Tabelle3")
    oRange = osheet.getCellRangeByName("A1")
    oRanges.addRangeAddress(oRange.RangeAddress, True) 
    odoc.lockControllers(true)
    oController = odoc.currentcontroller
    oController.select(oRanges)
    odoc.lockControllers(false)
    dim printProp() as new com.sun.star.beans.PropertyValue
    odoc.print(printProp())
End Sub
Gruß R
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: CALC: Drucken Problem

Beitrag von F3K Total »

Gast hat geschrieben:Danke es funktioniert. Nur es sollte so sein, dass er nach dem Drücken wieder auf Tabelle1 zurück springt.
Danke sehr freundlich.

Code: Alles auswählen

    Sub print_multiple_tables
        oRanges = thiscomponent.createInstance("com.sun.star.sheet.SheetCellRanges")
        odoc = thiscomponent
        osheets = odoc.sheets
        osheet1 = osheets.getbyname("Tabelle1")
        'Tabelle2 zufügen
        osheet = osheets.getbyname("Tabelle2")
        oRange = osheet.getCellRangeByName("A1")
        oRanges.addRangeAddress(oRange.RangeAddress, True)
        'Tabelle3 zufügen
        osheet = osheets.getbyname("Tabelle3")
        oRange = osheet.getCellRangeByName("A1")
        oRanges.addRangeAddress(oRange.RangeAddress, True)
        odoc.lockControllers(true)
        oController = odoc.currentcontroller
        oController.select(oRanges)
        odoc.lockControllers(false)
        dim printProp() as new com.sun.star.beans.PropertyValue
        odoc.print(printProp())
        wait 1000
        oController.ActiveSheet = osheet1
    End Sub
R
Antworten