Calc Tabelle in ein Makro einbinden

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

Moderator: Moderatoren

mikeleb
******
Beiträge: 826
Registriert: Fr, 09.12.2011 16:50

Re: Calc Tabelle in ein Makro einbinden

Beitrag von mikeleb » Mi, 01.05.2019 11:46

Hallo,
auch nach mehrfachem Lesen verstehe ich es nach wie vor nicht.
@Faol: Nach dieser Berechnung bedeutet es, dass die Anzahl der Abschnitte ein Teiler der Anzahl der Seiten sein muss. Wenn die Anzahl der Seiten nun eine Primzahl ist, geht es gar nicht(z. B. 241 Seiten). Bei z. B. 262 Seiten gäbe es nur zwei Abschnitte. Soll das so?
Nach den Fehlermeldungen, die du im Makro einbaut hast, vermute (???) ich, dass es so nicht sein soll.
Ich kann mir aber auch nicht vorstellen, dass es bei 240 Seiten 12 Abschnitte geben soll und bei 244 Seiten nur noch 4 ...
---
Daher noch einmal die Frage: Nach welcher Regel/Prinzip sollen die Kopfzeilentexte (Wie viele sind es? Variabel?) auf die Buchseiten (Alle außer der ersten? Nur im "eigentlichen" Textbereich"? Auch in Verzeichnissen? Auf leeren Seiten? ...) verteilt werden? Immer links und rechts? Sind auch ungeradzahlige Abschnittslängen möglich/zulässig? ...
Gruß,
mikeleb

Benutzeravatar
Faol
****
Beiträge: 147
Registriert: Di, 26.01.2016 21:18

Re: Calc Tabelle in ein Makro einbinden

Beitrag von Faol » Do, 02.05.2019 16:43

Hallo mikeleb,

ich bin kein Mathe-As.

Deine Fragen versuche ich mal kurz und knapp mit dieser Datei zu beantworten,
ich denke dann wird mein, bzw. Martin's Problem klar. So hoffe ich zumindest.
Anzahl verschiedene Kopftexte v2.ods
(19.96 KiB) 40-mal heruntergeladen
Bitte vergesse einfach meine zuletzt hochgeladene Calctabelle mit dem Makro.
Mir sind dort diverse Ungereimtheiten aufgefallen.
Gruß
Faol
⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒
Win.10 Prof. (x64) • AOO 4.1.6 • LibO 6.3.2.2 (x64)
⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐

mikeleb
******
Beiträge: 826
Registriert: Fr, 09.12.2011 16:50

Re: Calc Tabelle in ein Makro einbinden

Beitrag von mikeleb » Do, 02.05.2019 18:25

Hallo Faol,
soweit ist das klar. Nur sehe ich das Problem nicht.
Es sind n Seiten. Es gibt k Kopfzeilentexte (für links und für rechts). Die Frage ist nun eigentlich nur noch, wie die Abschnitte entstehen sollen - nach inhaltlicher Vorgabe, gleichmäßig verteilt, ...
Müssen alle Kopfzeilentexte verwendet werden? Werden so viele kreiert, wie notwendig werden? ...
Gruß,
mikeleb

Benutzeravatar
Faol
****
Beiträge: 147
Registriert: Di, 26.01.2016 21:18

Re: Calc Tabelle in ein Makro einbinden

Beitrag von Faol » Do, 02.05.2019 21:19

Hallo mikeleb,
Werden so viele kreiert, wie notwendig werden?
Da die Seitenanzahl im aktuellen Buch feststeht, JA.
Beispiel Musterbuch = 252 Seiten die befüllt werden müssten.
Seite 2 bis Seite 253= 252 Seiten
252 S./20 Texte = 12,6 Abschnitte

20 Texte * 12 Abschnitte = 240 Seiten
1 Abschnitt =
10x derselbe Text für linke Seite
10x derselbe Text für rechte Seite
- - - - - -
20 Texte * 0,6 Abschnitte = 12 Seiten
240 +12 = 252
Diese Berechnung hinkt irgendwie.
Allerdings wenn man einfach sagt, 12 Seiten/2 = 6
Ergeben sich hieraus 6 linke - und 6 rechte Seiten.
Aber ein "Textpaar" fehlt, oder?

Diese Berechnungen sollen zukünftig über ein Dialogfenster (Ein-/Ausgabefelder) erfolgen.
Entspechende Warnungen sollen ausgegeben werden, wenn die Berechnung nicht aufgeht.
Denn das Programm soll auch für zukünftige Bücher mit anderer Seitenanzahl, etc. funktionieren.

@Martin
Ist dies alles so richtig Martin?
Gruß
Faol
⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒
Win.10 Prof. (x64) • AOO 4.1.6 • LibO 6.3.2.2 (x64)
⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐

mikeleb
******
Beiträge: 826
Registriert: Fr, 09.12.2011 16:50

Re: Calc Tabelle in ein Makro einbinden

Beitrag von mikeleb » Fr, 03.05.2019 18:56

Hallo,
wenn 20 Texte möglichst gleichmäßig auf 252 Seiten verteilt werden sollen: 8 Abschnitte á 12 Seiten und 12 Abschnitte á 13 Seiten.
252:20=12,6 -> also müssen es pro Abschnitt 12 oder 13 Seiten sein. Es muss also 12·a+13·b=252 gelten, wobei a+b=20 ist.
12·a+13·(20-a)=252 oder 260-252=13a-12a und somit: a=260-252
Ist m der aufgerundete Werte von 252:20 (Seiten n:Texte k), dann gilt allgemein a=m·k-n und b=k-a
Soweit die Theorie ...
Das geht soweit immer. Allerdings ist dann immer eine Seitenanzahl (eines Abschnittes) ungeradzahlig. Darf das sein? Gibt es weitere Bedingungen ...?
Die Bedingung, dass jeder Abschnitt eine gerade Anzahl von Seiten hat, lässt sich auch lösen:
12·a+14·b=252 mit a+b=20 -> a=14 und b=6, also 14 Abschnitte á 12 Seiten und 6 Abschnitte á 14 Seiten )geht auch immer, wenn die Gesamtseitenanzahl ganzzahlig ist.
Bleibt immer noch die Frage (an Martin) ob das so sein soll?
Gruß,
mikeleb

Benutzeravatar
Faol
****
Beiträge: 147
Registriert: Di, 26.01.2016 21:18

Re: Calc Tabelle in ein Makro einbinden

Beitrag von Faol » Fr, 03.05.2019 22:01

Hallo mikeleb,
wenn 20 Texte möglichst gleichmäßig auf 252 Seiten verteilt werden sollen: 8 Abschnitte á 12 Seiten und 12 Abschnitte á 13 Seiten.
252:20=12,6 -> also müssen es pro Abschnitt 12 oder 13 Seiten sein. Es muss also 12·a+13·b=252 gelten, wobei a+b=20 ist
Leider nicht.

Man muss hierbei immer im Hinterkopf behalten, dass der
linke und der rechte Text im Buch einen Satz bilden.
Linke Seite = "Mein Haus hat"
Rechte Seite = "grüne Dachpfannen."

"Mein Haus hat || grüne Dachpfannen."


Im nächsten Abschnitt folgt:
"Mein zweites Haus hat || rote Dachpfannen."
usw.


Daraus folgt:
  • a und b sind immer gleich groß.
    Wenn ein linker Text hinzugefügt wird, dann muss auch ein rechter Text
    hinzugefügt werden, weil sonst keine Satzbildung gegeben ist.
  • Start der Verteilung ist immer eine linke/ gerade Seite
  • Ende der Verteilung ist immer eine rechte/ ungerade Seite

Meine Berechnung:
252/20=12,6 (~13)
20*Ganzzahl(12,6)=240
252-240=12(Rest Seiten)
12 Seiten entspricht 0,6
Dies bedeutet das Martin 2 weitere Texte hinzufügen muss.
2 Texte = (1 Text linke Seite) + (1 Text rechte Seite)

Die maximale Abschnittsgröße bei dieser Seitenanzahl ergibt sich aus:
240 Seiten/20 Texte = 12 Abschnitte
Jeder Abschnitt besteht aus 12 linken und 12 rechten Seiten = 24 Seiten
Der erste Abschnitt erstreckt sich bei dieser Berechnung von
Seite 2 bis Seite 25
dann:
Abschitt 2 --> Seite 26 bis Seite 49
Abschitt 3 --> Seite 50 bis Seite 73
usw.

Der 13. Abschnitt umfasst nur 12 Seiten (6 links + 6 rechts) und ersteckt sich über:
Seite 242 bis Seite 253
Gruß
Faol
⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒
Win.10 Prof. (x64) • AOO 4.1.6 • LibO 6.3.2.2 (x64)
⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐

mikeleb
******
Beiträge: 826
Registriert: Fr, 09.12.2011 16:50

Re: Calc Tabelle in ein Makro einbinden

Beitrag von mikeleb » Sa, 04.05.2019 13:56

Hallo,
so langsam wird es für verständlich.
Es gibt eine gerade Anzahl Seiten, die mit Kopfzeilentexten versehen werden sollen (z. B. n=252). Es stehen k Kopfzeilentexte für linke Seiten und k Kopfzeilentexte für rechte Seiten zur Verfügung (z. B. k=10, insgesamt 20 Texte von denen aber jeweils zwei zwingend zueinander gehören).
Es gibt mit diesen Zahlen:
126 Doppelseiten für die 10 Paare von Kopfzeilentexten. Um diese möglichst gleichmäßig zu verteilen nimmt man 4 Abschnitte á 12 Doppelseiten und 6 Abschnitte á 13 Doppelseiten.
Theoretisch ist das immer lösbar, solange die Anzahl der Seiten geradzahlig bleibt. Die Berechnung habe ich mal in den Anhang gepackt.
Es bleibt immer noch die Frage, ob das so sein soll?
Gibt es eine inhaltliche Verbindung zwischen den Seiten und den Kopfzeilentexten? Dann wäre das obige schlichtweg akademischer Unsinn.
Dateianhänge
Anzahl verschiedene Kopftexte Berechnung.ods
(17.98 KiB) 39-mal heruntergeladen
Gruß,
mikeleb

Benutzeravatar
Faol
****
Beiträge: 147
Registriert: Di, 26.01.2016 21:18

Re: Calc Tabelle in ein Makro einbinden

Beitrag von Faol » Mo, 06.05.2019 20:57

Hallo mikeleb,
Gibt es eine inhaltliche Verbindung zwischen den Seiten und den Kopfzeilentexten?
  1. Die Texte werden wie bei meinem Musterbuch und auch bei Martin, ausschließlich aus einer Calc-Tabelle gelesen.
  2. Die Texte stehen nicht in einem unmittelbaren Kontext zum Buchinhalt.
Also beispielsweise nicht in der Form, als dass eine Kapitelüberschrift eingelesen wird.

Ich habe Deine letzte Tabelle zum Anlass genommen, diese aber umstrukturiert und meine Berechnungsgrundlagen eingearbeitet.
Ich hoffe meine Beschreibungen sind mindestens ausreichend genug und sorgen nicht für weitere Verwirrungen.
  • Die grünen Zellen sind alle frei editierbar.
  • Die gelben Zellen enthalten alle Formeln
Die Liste der Kopfzeilentexte ist im Prinzip nach unten offen, will sagen, die Liste kann bei
Bedarf erweitert werden, wenn mehr Kopftexte benötigt werden.

Eingaben und Grundlagenberechnung (Zellbereich B6:B10):
  1. Eingabe Zelle B6 Gesamtseitenanzahl → geradzahlig
  2. Eingabe B7:
    Anzahl Seiten, welche von der Berechnung ausgenommen werden sollen?
    z.B. Erste und letzte Seite des Buches → =2 → Anzahl geradzahlig
  3. Eingabe B8 = Startseite → geradzahlig
  4. Berechnung in B9:
    Seitenanzahl = Gesamtseitenanzahl - (Erste und letzte Seite des Buches) → geradzahlig
    z.B. 252 = 254 - 2
  5. Eingabe B10 Anzahl der Kopftexte
Hieraus ergeben sich alle weiteren Berechnungen

Seitenanzahl und Anzahl Kopftexte ergeben die Anzahl und Größe der einzelnen Abschnitt, als auch eine etwaige Restseitenanzahl.
Eine Restseitenanzahl weist ihrerseits daraufhin, dass ggf. weitere Kopftexte einzufügen sind.
Im Grunde generiert sich die Gesamtberechnung aus:
„zu befüllende Seiten“ und „anfängliche Anzahl Kopftexte“
Anzahl verschiedene Kopftexte Berechnung.ods
(23.97 KiB) 52-mal heruntergeladen
Gruß
Faol
⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒
Win.10 Prof. (x64) • AOO 4.1.6 • LibO 6.3.2.2 (x64)
⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐

mikeleb
******
Beiträge: 826
Registriert: Fr, 09.12.2011 16:50

Re: Calc Tabelle in ein Makro einbinden

Beitrag von mikeleb » Mo, 06.05.2019 22:56

Hallo,
damit haben wir Martin zwei verschiedene Varianten vorgeschlagen, um die Kopfzeilentexte auf die Seiten zu verteilen.
Nun kann er sich eine aussuchen.
Unabhängig davon ist die Frage, ob mit Pseudokopfzeilen oder mit Textrahmen. Mich würde schon interessieren, warum "mein" Makro zu einem Fehler führt. (was nicht heißen soll, dass es die bessere Lösung sei - es liegt mir fern diese aufzudrängen!)
Gruß,
mikeleb

Benutzeravatar
Faol
****
Beiträge: 147
Registriert: Di, 26.01.2016 21:18

Re: Calc Tabelle in ein Makro einbinden

Beitrag von Faol » Di, 07.05.2019 10:38

Hallo mikeleb,
damit haben wir Martin zwei verschiedene Varianten vorgeschlagen, um die Kopfzeilentexte auf die Seiten zu verteilen.
Nun kann er sich eine aussuchen.
Habe gerade festgestellt, dass meine Berechnungen einen Fehler
produzieren, wenn folgende Zahlenkombination auftritt:
  • Gesamtseitenanzahl = 254
  • abzgl. Erste und letzte Seite = 2
  • Startseite = 2
  • zu befüllende Seiten = 252
  • Kopftexte gesamt = 32
In diesem Fall wird eine falsche Berechnung durchgeführt, was zur Folge hat,
dass der letzte Abschnitt zu groß ist, d.h. zuviele Seiten enthält.
Mich würde schon interessieren, warum "mein" Makro zu einem Fehler führt.
Die Fehlermeldung "End of content node..." läßt mich vermuten, dass es in Martin's Buch
einen Fehler in der Content.xml gibt. Denn nur in Martin's Buch erhalte ich den Laufzeitfehler,
sobald das 208. Frame eingetragen wurde. 208. Frame = Seite 208.
Habe zwischenzeitlich die Seiten 204 bis 214 gelöscht und dann Dein Makro laufen lassen.
Jetzt läuft es ohne Laufzeitfehler, allerdings werden ab Seite 250 keine Frames mehr verteilt.
(was nicht heißen soll, dass es die bessere Lösung sei - es liegt mir fern diese aufzudrängen!)
So habe ich Deinen Ratschlag auch nicht verstanden, ich finde die Lösung mit dem Frames sehr interessant.
Ob Frames oder Pseudokopfzeilen soll Martin's Entscheidung bleiben.
Jedenfalls ist in beiden Fällen zusätzlicher Programmieraufwand erforderlich.
Ausserdem muss in beiden Fällen vermieden werden, dass zusätzliche Seiten generiert werden.
Soll heißen, Frames oder Pseudokopfzeilen müssen so formatiert werden,
dass diese exakt oberhalb des jetzigen Fließtextes eingefügt werden.

Bei meinen Tests ist mir folgendes aufgefallen.
Mit unverändertem Frame-Makro:
  1. Es werden zusätzliche Seiten generiert.
  2. Frames werden nicht bis zu letzten Seite eingetragen
  3. Nach Makrodurchlauf befinden sich auf Seite 374 zwei Frames,
    danach sind keine Frames mehr vorhanden.
  4. Inhaltlich varieren die Texte der Frames (mal 1 Text, mal 2 Texte)
Dies ist nicht bös gemeint und ich zweifele in keinerweise an Deinen Fähigkeiten.
Ich selbst keine diese Art von Problemen nur zu gut.
Lorem ipsum dolor sit amet.odt
(38.65 KiB) 39-mal heruntergeladen
Gruß
Faol
⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒
Win.10 Prof. (x64) • AOO 4.1.6 • LibO 6.3.2.2 (x64)
⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐

mikeleb
******
Beiträge: 826
Registriert: Fr, 09.12.2011 16:50

Re: Calc Tabelle in ein Makro einbinden

Beitrag von mikeleb » Di, 07.05.2019 22:59

Hallo,
da war dann doch noch einiges zu lernen ...
1) Kopfzeilen müssen doch nicht eingeschaltet werden, da die Textrahmen ja direkt auf der Seite platziert werden.
2) Das Setzen der Textrahmen mit Verankerung auf der Seite ist doch kniffliger als gedacht:

Code: Alles auswählen

oView.jumptopage(i)
		oView.jumptostartofpage()
		...
		oDoc.Text.insertTextContent(oView, oFrame, FALSE)
Sollte ja eigentlich den Rahmen auf die Seite setzen. Allerdings passiert folgendes (ich habe es mir zumindest so zusammengereimt): Der Viewcursor ist zwar auf dem Beginn der Seite, allerdings wird der Rahmen zunächst in den aktuellen Absatz eingefügt und dann der Ankerpunkt auf der Seite gesetzt, auf der der Beginn des Absatzes liegt. Befindet sich nun am Anfang der Seite Text eines Absatzes der auf der vorangegangenen Seite begann, so wird der Rahmen auf der vorangegangenen Seite gesetzt.(Ganz heftig wird es, wenn der Absatz sich über mehrere Seiten erstrecken würde.) Dadurch entstanden auf manchen Seiten zwei Rahmen und auf manchen keine. Die Lösung dafür war, die richtige Seite nach dem Verankern per .AnchorPageNo zu setzen.
Gleichzeitig verschoben diese mehreren Rahmen den Textfluss, da ihr Umlauf auf "Parallelen Durchlauf" gesetzt war. Er ist nun auf "Durchlauf" gesetzt.
Dateianhänge
verschiedene kopfzeilen per textrahmen2.odt
(38.78 KiB) 99-mal heruntergeladen
Gruß,
mikeleb

martin11
***
Beiträge: 99
Registriert: Do, 30.03.2017 16:07

Re: Calc Tabelle in ein Makro einbinden

Beitrag von martin11 » Mi, 08.05.2019 09:22

Hallo Mikeleb,
ich habe so viel am Hals, dass ich Basic so weit wie notwendig in den nächsten 8 Wochen nicht lernen kann.
Ob die 8 Wochen genügen steht auch noch in den Sternen.
Nun noch mal zu meinem Wunsch.
Als Faol mir das Makro erstellt hat, habe ich aus dem Bauch heraus gesagt
240 Seiten und 2x 10 Kopfzeilen.
Faol hat daraus 20 Kopftexte gemacht.
Das war wirklich Ok.
Es hat sich aber gezeigt, dass ich eine variable Einstellung gebrauche.
Da Du das Thema ja offensichtlich erkannt hast nun meine Frage:
Machst Du mir das?
Schicke mir dazu eine private Nachricht,
dann können wir über alles sprechen.
Gruß
Martin

mikeleb
******
Beiträge: 826
Registriert: Fr, 09.12.2011 16:50

Re: Calc Tabelle in ein Makro einbinden

Beitrag von mikeleb » Mi, 08.05.2019 13:54

Hallo,
Da Du das Thema ja offensichtlich erkannt hast
Da bin ich mir nicht so sicher, denn es sind eine Menge Fragen offen ...
Zunächst hat mich das Problem gereizt, für das es verschiedene Lösungen gibt.
dass ich Basic so weit wie notwendig in den nächsten 8 Wochen nicht lernen kann
Das ist verständlich.
Gruß,
mikeleb

Antworten