|
Jörg Kleinfeld |
|
|
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 |
|
|
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 |
|
|
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 |
| Powered by Nabble | Edit this page |