Mehr als einen Zellbereich in Writer Texttabellen erzeugen

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

Moderator: Moderatoren

HM
**
Beiträge: 22
Registriert: Mi, 23.06.2004 20:49
Wohnort: bei München

Mehr als einen Zellbereich in Writer Texttabellen erzeugen

Beitrag von HM »

Hallo,

ich suche eine Lösung für folgendes Problem:

Mit dem nachfolgenden Code verbinde ich mehrere Zellen (z.B. D2:D4) in einer Writer-Tabelle zu einem Bereich:

tabellen = dok.texttables
tabelle = tabellen.getbyname("Tabelle1")
Cursor = tabelle.createCursorByCellName("D2")
cursor.godown(2, true)
rem alternativ: cursor.gotoCellByName ("D4", True)
cursor.mergeRange()

Leider ist es mir aber nicht möglich, in derselben Tabelle per Makro weitere Zellen (z.B. F2:F4) zu verbinden.
Dabei ist es egal, ob ich das Ganze in einer Schleife oder einer zweiten Prozedur (oder am nächsten oder übernächsten Tag :-) ) versuche.
Die Prozedur wird dann immer mit einem Basic-Laufzeitfehler abgebrochen.

Hat jemand eine Tip wie sich mein Problem lösen lässt?

Gruß

Herbert
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Ich habe mich jetzt nicht damit beschäftigt und tippe nur mal:

Du bist Dir über die True-Ausdrücke in Deinem Code im Klaren?
Du weißt das Du Zellbereiche nicht miteinander verschachteln kannst?


Gruß
Stephan
HM
**
Beiträge: 22
Registriert: Mi, 23.06.2004 20:49
Wohnort: bei München

Beitrag von HM »

Hallo Stephan,

zu deinen Fragen:
Du bist Dir über die True-Ausdrücke in Deinem Code im Klaren?
Es ist eigentlich nur ein True Ausdruck. Der Zweite ist in der auskommentierten Möglichkeit - anstatt godown - gotoCellByName.
Was ein Wahrheitswert ist, darüber bin ich mir durchaus im Klaren.
Warum man in hier benötigt zugegebenermaßen nicht; rein von der Logik her ginge es auch ohne - aber ich akzeptier das einfach so wie es ist.
Du weißt das Du Zellbereiche nicht miteinander verschachteln kannst?
Die in meinem Posting genannten Zellbereiche D2:D4, F2:F4 sind nicht verschachtelt. Sie lassen sich manuell in der Tabelle und nacheinander problemlos verbinden

Eventuell habe ich mich anfangs missverständlich ausgedrückt:
Ich benötige nicht einen verbundenen Bereich wie z. B. D2:D4;F2:F3 der so nicht zu erzeugen ist, sondern zwei respektive mehrere voneinander unabhängige Bereiche.
Also grob folgendes: In der Spalte A sind keine verbundenen Zellen, dann Bereich D2:D4 - die Zellen in der Spalte C sind nicht verbunden - und dann den Bereich F2:F4.

Vielleicht hast du ja einen Lösungsansatz

Gruß

Herbert
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Ich müßte mir das genau ansehen habe aber keine Zeit, was ist falsch (nur eine Hypotese):

Falls Du den ersten Zellbereich erzeugt hast und anschließend den Cursor mit goRight o.ä. bewegst, denn Du willst ja von d nach F und Du verwendest True dann werden alle Zellen über die Du den Cursur bewegst eine große Markierung und wenn Du erneut verbindest ist das eine Verschachtelung.
Verwende also als Parameter False um zum anderen Bereich zu gehen und wenn Du da bist wieder True um zu markieren.
True heißt immer Bewegen+Markieren , False heißt nur bewegen.

Nur eine Vermutung.


Gruß
Stephan
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hallo Herbert,
Leider ist es mir aber nicht möglich, in derselben Tabelle per Makro weitere Zellen (z.B. F2:F4) zu verbinden.
Hmm, kann ich leider nicht nachvollziehen (Win XP, 1.9.m69).
Ich kann ohne weiteres auch später noch Zellen verbinden, auf den gleichen Weg. - Obwolh - es gelang mir auch einmal, den Fehler zu erzeugen. Da war ich irgendwie mit der Nummerierung durcheinander gekommen.

Also, hier würde ich ansetzen. Die Zellen müssen natürlich nebeneinander und fortlaufend nummeriert sein. Wenn schon welche verbunden wurden, verschiebt sich so einiges bei der Nummerierung (Zellnamen).

Manchmal hilft, das Dokument zwischendurch zu speichern - ich glaube, dann wird die Zellenzählung neu initialisiert - die Namen passen wieder.

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
HM
**
Beiträge: 22
Registriert: Mi, 23.06.2004 20:49
Wohnort: bei München

Beitrag von HM »

Hallo Stephan, hallo Thomas,

danke für eure Antworten.

Ihr habt natürlich beide recht,
es ist möglich, per Makro erst einen Zellbereich zu erzeugen und dann an einer anderen Stelle einen zweiten, dritten ....

Hier eine kurze Zusammenfassung, falls jemand das gleiche Problem haben sollte:

Meine ursprüngliche Idee war, erst einen Zellbereich (z.B. D2:D4) zu erzeugen und dann auf die Zellposition für den zweiten zu springen ohne den Zellcursor mit goleft, goright usw. zu benutzen. Insoweit konnte ich anfangs mit Stephans Lösung, den Cellcursor durch die Tabelle wandern zu lassen und dabei den Wahrheitswert auf false zu setzen nicht sonderlich viel anfangen, obwohl das eine der Lösungsmöglichkeiten für mein Problem darstellt. (Einfach mit "False"-Wert zur gewünschten Zelle wandern)
Beim Ansprechen der "Startzelle" zum Erzeugen des zweiten Zellbereichs brach dann das Programm mit dem Basic-Laufzeitfehler ab. Und hier kommt nun das Posting von Thomas ins Spiel:
Wenn schon welche verbunden wurden, verschiebt sich so einiges bei der Nummerierung (Zellnamen)
Mir war nicht aufgefallen, dass die gewünschte "Startzelle" nicht mehr den Namen"F2" hatte, sondern um beim obigen Beispiel Zellbereich D2:D4 zu bleiben den Namen C2.2.1. Die verbundene Zelle trägt den Namen B2 und die Zellen links davon die Namen A2.1.1 bis A32.3.1 Die Zellen über und unter dem Bereich werden normal z. B. von A1 (A5) über D1 (D5) und F1 (F5) bis xy1 benannt.
Ab dem Moment, in dem ich in meiner Programmierung (Schleife und/oder zweite Prozedur) als ZellName "C2.2.1" für die "Startzelle" des zweiten Zellbereichs eingetragen habe hat dann auch diese funktioniert.

Nochmals vielen Dank für eure schnelle Hilfe

Gruß

Herbert
Antworten