Fußzeilen oder wie?

25/02/2016 - 00:45 von Lothar Geyer | Report spam
Ich schreibe Rechnungen mit einem VB6-Programm, das eine Word-Vorlage
ausfüllt. In der Tabelle der Positionen ist eine Position mit den
Textmarken definiert. Diese Position kopiere ich mir so oft in das
Dokument, wie in der aktuellen Rechnung Positionen zu erstellen sind.
Das funktioniert auch alles einwandfrei.

Nun soll folgende Aufgabe gelöst werden: Am Ende jeder Seite soll die
Zwischensumme der bis dahin gedruckten Positionen ausgegeben werden. Wie
mache ich das am Besten?

Mein erster Ansatz: in der Vorlage wird eine zweite Zeile definiert, die
den Aufbau der Zwischensummen-Zeile wiedergibt. Die kopiere ich mir (so
wie die "normale" Positionszeile auch) und füge immer am Ende einer
Seite diese Zeile ausgefüllt in die Tabelle. Problem: wie erkenne ich
das Ende einer Seite? Und was mache ich bei Positionen, die über einen
Seitenwechsel gehen? Was wenn der Anwender im Nachhinein den
Seitenwechsel in der Position ausschließt?

Zweiter Ansatz: in der Vorlage wird für die Zwischensumme eine Textmarke
in der Fußzeile definiert. Aber auch hier muss ich einen Seitenwechsel
erkennen. Und wie gebe ich das dann an, denn die selbe Textmarke muss ja
auf den verschiedenen Seiten verschiedene Zwischensummen ausgeben.

Sonstige Ansàtze?
Vielleicht gibt es ja sogar Funktionen in Word, die ich nur aufrufen muss...

Leider bin ich in VBA gar nicht bewandert (zumindest was die speziellen
Funktionen anbelangt) und bitte um Eure Hilfe.

Lothar Geyer
 

Lesen sie die antworten

#1 Bernhard Sander
25/02/2016 - 16:13 | Warnen spam
Hallo Lothar,

Ich schreibe Rechnungen mit einem VB6-Programm, das eine Word-Vorlage
ausfüllt. In der Tabelle der Positionen ist eine Position mit den
Textmarken definiert. Diese Position kopiere ich mir so oft in das
Dokument, wie in der aktuellen Rechnung Positionen zu erstellen sind.
Das funktioniert auch alles einwandfrei.

Nun soll folgende Aufgabe gelöst werden: Am Ende jeder Seite soll die
Zwischensumme der bis dahin gedruckten Positionen ausgegeben werden. Wie
mache ich das am Besten?

Mein erster Ansatz: in der Vorlage wird eine zweite Zeile definiert, die
den Aufbau der Zwischensummen-Zeile wiedergibt. Die kopiere ich mir (so
wie die "normale" Positionszeile auch) und füge immer am Ende einer
Seite diese Zeile ausgefüllt in die Tabelle. Problem: wie erkenne ich
das Ende einer Seite? Und was mache ich bei Positionen, die über einen
Seitenwechsel gehen? Was wenn der Anwender im Nachhinein den
Seitenwechsel in der Position ausschließt?

Zweiter Ansatz: in der Vorlage wird für die Zwischensumme eine Textmarke
in der Fußzeile definiert. Aber auch hier muss ich einen Seitenwechsel
erkennen. Und wie gebe ich das dann an, denn die selbe Textmarke muss ja
auf den verschiedenen Seiten verschiedene Zwischensummen ausgeben.

Sonstige Ansàtze?
Vielleicht gibt es ja sogar Funktionen in Word, die ich nur aufrufen muss...



Zwischensummen in Word einzubauen ist eine echte Herausforderung.

Gerade um solche Unwàgbarkeiten abzufangen, dass der Anwender nachtràglich noch was àndert und sich damit alles verschiebt, würde ich die Behandlung der Zwischensummen durch ein Makro in Word erledigen. Das kann der Anwender nach seinen Änderungen nochmal aufrufen und die Zwischensummen sind wieder sauber. Der Programmieraufwand ob in VB oder in VBA ist wohl auch sehr àhnlich.

Der Ansatz mit der Fußzeile funktioniert nicht wirklich, weil die Fußzeilen innerhalb eines Abschnitts immer identisch sind. Es gibt zwar ein Feld StyleRef, das setzt aber voraus, dass die Zwischensummen im Text schon vorkommt. Du müsstest allenfalls dafür sorgen, dass jede Seite in einem eigenen Abschnitt steht... (nicht sehr sinnvoll, siehe oben, Änderungen durch den Anwender).

Das Selection- und das Range-Objekt haben die Eigenschaft .Information. Damit kann man abfragen, auf welcher Seite im Dokument sich das Ende der Range oder der Selection befindet. Range.Information(wdActiveEndPageNumber). Weiteres siehe Word-Hilfe. Darüber bekommst Du heraus, wo der Seitenwechsel stattfindet. Dann musst Du "nur noch" vorher die Zwischensummenzeile einfügen, nachprüfen, ob die Zwischesumme immer noch auf der alten Seite steht und falls nicht, entsprechend nach vorne verlegen. Problem wird sein, wenn eine Position lànger als eine Seite wird. Hier muss man rein vom Layout drüber nachdenken. Um die Zwischensumme trotz des langen Positionstextes unterzubringen muss rein technisch gesehen dieser Text auf zwei Tabellenzeilen aufgeteilt werden.
Da hàtte ich noch die Idee, dass die Zwischensumme auf jeder Seite in einem Positionsrahmen untergebracht wird, das irgendwo auf der Seite verankert ist, die gewünschte Position bekommen und den Umbruch "oben und unten" hat. Ein Textfeld nutzt nichts, weil es nur innerhalb der Tabellenzelle, nicht jedoch im Rest der Tabellenzeile den Text verdràngt.

Beim Abklappern der Tabellenzeile wegen dem Seitenwechsel kannst Du nebenbei gleich aufsummieren.

Die Zwischensummezeile (als Tabellenzeile) würde ich entweder als Textbaustein in der Vorlage hinterlegen oder programmatisch aufbauen.

Soweit ein paar Gedanken zu diesem Thema. Beschàftigt hat es mich gelegentlich schon, ausgeführt habe ich es bisher noch nicht.

Gruß
Bernhard Sander

Ähnliche fragen