Quantcast

Tabellenschutz und Cursorposition über mehrere Tabellen setzen

classic Classic list List threaded Threaded
3 messages Options
Jörg Kleinfeld Jörg Kleinfeld
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Tabellenschutz und Cursorposition über mehrere Tabellen setzen

Guten Tag Listlinge,

in Calc möchte ich alle Tabellen auf den gleichen Stand bezüglich
Druckbereich und Cursorposition setzen.

Dazu gehe ich (versuche ich) mittels einer while- wend-Schleife
alle Tabellen durch und setze die entsprechenden Werte.

Die Messagebox innerhalb der Schleife zeigt mir auch einen
Durchlauf über alle Tabellen an. Es werden aber keine Werte
für die jeweiligen Tabellen gesetzt. Eine Fehlermeldung erhalte
ich auch nicht.

Ich weiss nicht mehr weiter. Vielleicht erkennt ja jemand von euch
den "Wurm".


'???????????????????????????????????????????????????????????????????????
sub Druckbereiche                                                   '  ?
'???????????????????????????????????????????????????????????????????????

'  ?????????????????????????????????????????????????????????????????????
'  ? Deklaration der Variablen                                         ?
'  ?????????????????????????????????????????????????????????????????????
        dim document as object
        dim dispatcher as object
        dim oSheet as object
        dim eSheets as object
        dim args1(3) as new com.sun.star.beans.PropertyValue    ' für den Druckbereich
        dim args2(0) as new com.sun.star.beans.PropertyValue    ' für die Cursorposition

'  ?????????????????????????????????????????????????????????????????????
'  ? Definition der Variablen                                          ?
'  ?????????????????????????????????????????????????????????????????????
        document        = ThisComponent.CurrentController.Frame
        dispatcher      = createUnoService("com.sun.star.frame.DispatchHelper")
        eSheets         = ThisComponent.getSheets.createEnumeration

        'Druckbereich
         args1(0).Name = "PrintArea"
        args1(0).Value = "$A$1:$O$42;$A$43:$O$53"
        args1(1).Name = "PrintRepeatRow"
        args1(1).Value = "$A$1:$A$2"
        args1(2).Name = "PrintRepeatCol"
        args1(2).Value = ""
               
        'Cursorposition
         args2(0).Name = "ToPoint"
        args2(0).Value = "$D$5"
               
'  ?????????????????????????????????????????????????????????????????????
'  ? Durchlauf aller Tabellen                                          ?
'  ?????????????????????????????????????????????????????????????????????
        While eSheets.hasMoreElements
        oSheet  = eSheets.nextElement()

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

                dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())
               
                MsgBox  "Nächster Tabellenname ist: " & oSheet.getName & "."
        Wend
       
        MsgBox  "Druckbereiche wurden definiert!" & CHR$(13) &_
                "Achten Sie auf eine Skalierung von 75% " & CHR$(13) &_
                "und einen Rand von 1,9cm ringsherum."
       
end sub



--
Mit freundlichen Grüßen
Jörg Kleinfeld

mailto:[hidden email]
http://www.bsv.de

Montag, 23. Mai 2011 * 16:29:36 Uhr


--
Informationen zum Abmelden: E-Mail an [hidden email]
Tips zu Listenmails: http://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: http://listarchives.libreoffice.org/de/users/
Alle E-Mails an diese Liste werden unlöschbar öffentlich archiviert

Stefan Weigel Stefan Weigel
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: [de-users] Tabellenschutz und Cursorposition über mehrere Tabellen setzen

Hallo Jörg,

Am 23.05.2011 16:59, schrieb Jörg Kleinfeld:

> Dazu gehe ich (versuche ich) mittels einer while- wend-Schleife
> alle Tabellen durch und setze die entsprechenden Werte.
>
> Die Messagebox innerhalb der Schleife zeigt mir auch einen
> Durchlauf über alle Tabellen an. Es werden aber keine Werte
> für die jeweiligen Tabellen gesetzt.

Das Statement

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

in Deiner Schleife betrifft stets das aktive Tabellenblatt. Du
durchläufst zwar eine Auflistung aller Tabellenblätter, machst das
jeweilige Blatt aber nicht aktiv, bevor Du den den Dispatcher anwendest.

Füge in der Schleife vor dem dispatcher-Statement folgendes
Statement ein:

ThisComponent.CurrentController.setActiveSheet(oSheet)

Damit müsste es klappen.

Gruß

Stefan


--
LibreOffice - Die Freiheit nehm' ich mir!

--
Informationen zum Abmelden: E-Mail an [hidden email]
Tips zu Listenmails: http://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: http://listarchives.libreoffice.org/de/users/
Alle E-Mails an diese Liste werden unlöschbar öffentlich archiviert
Jörg Kleinfeld Jörg Kleinfeld
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: [de-users] Tabellenschutz und Cursorposition über mehrere Tabellen setzen

Guten Tag Stefan Weigel,

am Montag, 23. Mai 2011 um 17:22 schrieben Sie:

======================== Zitatanfang ========================

> Hallo Jörg,

> Am 23.05.2011 16:59, schrieb Jörg Kleinfeld:

>> Dazu gehe ich (versuche ich) mittels einer while- wend-Schleife
>> alle Tabellen durch und setze die entsprechenden Werte.

>> Die Messagebox innerhalb der Schleife zeigt mir auch einen
>> Durchlauf über alle Tabellen an. Es werden aber keine Werte
>> für die jeweiligen Tabellen gesetzt.

> Das Statement

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

> in Deiner Schleife betrifft stets das aktive Tabellenblatt. Du
> durchläufst zwar eine Auflistung aller Tabellenblätter, machst das
> jeweilige Blatt aber nicht aktiv, bevor Du den den Dispatcher anwendest.

> Füge in der Schleife vor dem dispatcher-Statement folgendes
> Statement ein:

> ThisComponent.CurrentController.setActiveSheet(oSheet)

> Damit müsste es klappen.

> Gruß

> Stefan


> --
> LibreOffice - Die Freiheit nehm' ich mir!


========================= Zitatende =========================

Wow: 23 Minuten vom Einstellen des Problems bis zur Lösung!
Und ich bastele schon Stunden daran ...

Danke! Genau so funktioniert es.

--
Mit freundlichen Grüßen
Jörg Kleinfeld

mailto:[hidden email]
http://www.bsv.de
--
Informationen zum Abmelden: E-Mail an [hidden email]
Tips zu Listenmails: http://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: http://listarchives.libreoffice.org/de/users/
Alle E-Mails an diese Liste werden unlöschbar öffentlich archiviert
Loading...