So was wie Serienbriefe mit Calc?

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: So was wie Serienbriefe mit Calc?

von Mr.Ioes » Do, 21.10.2004 13:24

Hallo Stephan,

also erstmal möchte ich melden, dass Deine Anweisungen zum Löschen, bzw. überschreiben der Einzelabrechnungsblätter und die Erstellung an letzter Stelle prima klappen.

An den .pdf-Export traue ich mich irgendwie noch nicht ran, weil ich zu wenig von dem verstehe was zu tun ist.

Gruß - Mr.Ioes

von Mr.Ioes » Mi, 20.10.2004 22:19

Hallo Stephan,

nach dem ersten lesen muss ich erstmal gestehen, dass mir an einem PC auf den ich meistens Zugriff habe Adobe Arcrobat 5 installiert ist (also auch den Distiller). :oops:

Also mit dem oben Beschriebenen Code konnte ich alle Tabellenblätter für das Haus M*-109 erstellen. Für M*-111 muss ich noch eine leicht abgewandelte Vorlage erstellen und den Code anpassen, was aber kein Problem sein dürfte. Tja und dann kommen die anderen Häuser für die ich die jeweiligen Tabellen(-vorlagen) erst noch zusammenstellen muss (z.Teil fehlen mir da auch noch Daten).

Gruß und Dank - Mr.Ioes

von Mr.Ioes » Mi, 20.10.2004 13:36

Stephan hat geschrieben:
1. Wie ich (am besten zusätzlich) den .pdf-Export der einezlnen Abrechnungen hinkriege und

2. diese neuen Dateien entweder in bereits vorhandene Verzeichnisse oder (noch besser) in zu erstellende Verzeichnisse schreiben kann (wenn gleichnamige Verzeichnisse noch nicht vorhanden sind).
folgende Fragen:
es werden beispielsweise 8 neue Blätter erzeugt und zu den vorhandenen in der Ausgangsdatei hinzugefügt, ob das beibehalten werden soll ist mir egal - aber die 8 Blätter sollen auch in andere Dateien (damit sie gespeichert werden können)
Sollen das 8 Dateien mit je einem Tabellenblatt sein oder eine Datei mit 8 Tabellenblättern?
Steht der Speicherort wo die neuen Verzeichnisse angelegt werden sollen in irgendeiner Beziehung zum Speicherort des Ausgangsdokuments?
In Abhängigkeit wie die Dateien beschaffen sein sollen (1.Frage) können diese in einem oder mehreren Verzeichnissen gespeichert werden - was kannst Du dazu sagen?
Sollen die neuen Dateien nur gespeichert oder auch geöffnet werden (aber Vorsicht bei 20 Mietern gehen dann u.U. im Prinzip 20 Fenster auf)? Wenn geöffnet: welches Fenster soll den Fokus haben?
Müssen Druckbereiche per Code gesetzt werden? Was ist mit der Gestaltung von Kopf- und Fußzeilen bei PDF-Export? Wo sollen die PDF-Dateien gespeichert werden?
Also am liebsten wäre mir für die konkrete Aufgabe, wenn von den neu erstellten Tabellenblättern der Ausgangs-Calc-Tabelle .pdf-Exporte jeweils als eigenständige (einseitige) Datei einfach in dasselbe Verzeichnis geschrieben werden. Die Einzelbabrechnungen sollten denselben Druckbereich der Vorlage haben und zwar (in diesem Fall) ohne Kopf- oder Fußzeile. Der Name der pdf-Exporte sollte (bis natürlich auf die Dateiendung.pdf) identisch mit dem Namen der Einzelabrechnungstabelle sein, nämlich der Wohnungsnummer die ursprünglich in der Tabelle "Mieterliste" in Spalte A steht.

Für zukünftige Arbeiten wäre es aber auch sehr nett, wenn ich wüßte wie ich diese .pdf-Exporte in andere ggf. anzulegende Verzeichnisse schreiben kann. Beipsiel: Ausgangsdatei in .../2003/Gesamtuebersicht und die .pdf-Exporte in .../2003/2951 und .../2003/2952 u.s.w.

Daran die exprotierten neuen .pdf-Dateien direkt zu öffnen habe ich noch gar nicht gedacht und das ist für das konkrete Projekt auch nicht gewünscht.
Stephan hat geschrieben:
Ich die neuen Tabellen statt an erster Stelle (0) nach hinten an der gerade letzte Stelle erstellen kann.
Ändere diese Zeile:

Code: Alles auswählen

myDoc.Sheets.CopyByName("BK_EinzelAbrechnung",ohne,0)
in:

Code: Alles auswählen

myDoc.Sheets.CopyByName("BK_EinzelAbrechnung",ohne,myDoc.Sheets.count-1)
myDoc.Sheets.count entspricht der Anzahl der Tabellenblätter, da der Code jedoch die Position nach Index bestimmt, und dieser bei 0 beginnt, brauchst Du im Code myDoc.Sheets.count-1
Ich hab´s noch gar nicht ausprobiert, frage aber trotzdem schon mal nach: Werden die neuen Tabellenblätter jetzt an zweiter oder letzter Stelle eingefügt?

Gruß - Mr.Ioes

von Stephan » Mi, 20.10.2004 13:08

Du hast doch sicher auch eine Erklärung warum ich im Code-Editor (oder wie man das nennt) nicht mit dem Kontextmenü der rechten Maustaste kopieren und einfügen kann.
weil die Entwickler übersehen haben das zu implementieren? Ist bei mir genauso - verwende die üblichen Shortcuts STRG+C usw.
Schließlich bitte ich noch um einen Tipp, wie ich die gerade per Makro erstellten neuen Tabellen einfach überschreiben kann, insb. wenn ich eine nachträglich in der Vorlage geänderte Formatierung in alle Einzeltabellen übernehemen kann. Als ich probiert habe den Code einfach noch mal ausführen zu lassen kam eine Fehlermeldung.
Fehlermeldung kommt weil gleichnamige Blätter schon existieren. Da ich nicht weiß was sich zukünftig auf dem Ausgangsblatt alles ändern könnte würde ich eine universelle Lösung vorschlagen. Ergänze Deinen Code wie folgt:

Code: Alles auswählen

...
ohne = LTRIM(Wohnung.string)
If myDoc.Sheets.hasByName(ohne) Then
	mydoc.Sheets.removebyname(ohne)
end if 
myDoc.Sheets.CopyByName("BK_EinzelAbrechnung",ohne,0)
... 
Du kannst diesen Code nun immer verwenden (also entweder erstmalig oder wenn Du Änderungen vorgenommen hast) das Prinzip ist nur das geprüft wird ob das Blatt mit dem speziellen Namen schon existiert wenn ja wird es gelöscht und gleich wieder eingefügt. Vielleicht erscheint Dir das nicht so elegant, aber es ist sichergestellt das der Code immer funktioniert egal welche Änderungen Du auf dem Ausgangsblatt vornimmst.

Ich die neuen Tabellen statt an erster Stelle (0) nach hinten an der gerade letzte Stelle erstellen kann.
Ändere diese Zeile:

Code: Alles auswählen

myDoc.Sheets.CopyByName("BK_EinzelAbrechnung",ohne,0)
in:

Code: Alles auswählen

myDoc.Sheets.CopyByName("BK_EinzelAbrechnung",ohne,myDoc.Sheets.count-1)
myDoc.Sheets.count entspricht der Anzahl der Tabellenblätter, da der Code jedoch die Position nach Index bestimmt, und dieser bei 0 beginnt, brauchst Du im Code myDoc.Sheets.count-1

1. Wie ich (am besten zusätzlich) den .pdf-Export der einezlnen Abrechnungen hinkriege und

2. diese neuen Dateien entweder in bereits vorhandene Verzeichnisse oder (noch besser) in zu erstellende Verzeichnisse schreiben kann (wenn gleichnamige Verzeichnisse noch nicht vorhanden sind).
folgende Fragen:
es werden beispielsweise 8 neue Blätter erzeugt und zu den vorhandenen in der Ausgangsdatei hinzugefügt, ob das beibehalten werden soll ist mir egal - aber die 8 Blätter sollen auch in andere Dateien (damit sie gespeichert werden können)
Sollen das 8 Dateien mit je einem Tabellenblatt sein oder eine Datei mit 8 Tabellenblättern?
Steht der Speicherort wo die neuen Verzeichnisse angelegt werden sollen in irgendeiner Beziehung zum Speicherort des Ausgangsdokuments?
In Abhängigkeit wie die Dateien beschaffen sein sollen (1.Frage) können diese in einem oder mehreren Verzeichnissen gespeichert werden - was kannst Du dazu sagen?
Sollen die neuen Dateien nur gespeichert oder auch geöffnet werden (aber Vorsicht bei 20 Mietern gehen dann u.U. im Prinzip 20 Fenster auf)? Wenn geöffnet: welches Fenster soll den Fokus haben?
Müssen Druckbereiche per Code gesetzt werden? Was ist mit der Gestaltung von Kopf- und Fußzeilen bei PDF-Export? Wo sollen die PDF-Dateien gespeichert werden?

soweit, zunächst



Gruß
Stephan

von Mr.Ioes » Mi, 20.10.2004 02:24

Hallo Stephan,

also ich scheine es gerade für das erste Haus hingekriegt zu haben. Der Code (die Tabellen, insb. die Mieterliste habe ich zwischenzeitlich verändert):

Code: Alles auswählen

Sub Main
dim myDoc as object
myDoc = ThisComponent			
'myDoc ist eine Objektvariable
Dim datensatz%
For datensatz = 2 To 8	
	Wohnung = myDoc.getSheets().getByName("Mieterliste").getCellByPosition(0,datensatz-1)
	ohne = LTRIM(Wohnung.string)
	myDoc.Sheets.CopyByName("BK_EinzelAbrechnung",ohne,0)
	Formel_B4 = "=$Mieterliste.C" & datensatz
	Formel_C4 = "=$Mieterliste.A" & datensatz
	Formel_F4 = "=$Mieterliste.G" & datensatz
	Formel_B5 = "=$Mieterliste.F" & datensatz
	Formel_F5 = "=$Mieterliste.H" & datensatz
	Formel_B6 = "=$Mieterliste.E" & datensatz
	Formel_F7 = "=$Mieterliste.J" & datensatz
	Formel_F9 = "=$Mieterliste.L" & datensatz
	Formel_F13 = "=$Mieterliste.M" & datensatz
	Formel_C18 = "=$Mieterliste.N" & datensatz
	myDoc.getSheets().getByName(ohne).getCellRangeByName("$B$4").Formula = Formel_B4
	myDoc.getSheets().getByName(ohne).getCellRangeByName("$C$4").Formula = Formel_C4
	myDoc.getSheets().getByName(ohne).getCellRangeByName("$F$4").Formula = Formel_F4
	myDoc.getSheets().getByName(ohne).getCellRangeByName("$B$5").Formula = Formel_B5
	myDoc.getSheets().getByName(ohne).getCellRangeByName("$F$5").Formula = Formel_F5
	myDoc.getSheets().getByName(ohne).getCellRangeByName("$B$6").Formula = Formel_B6
	myDoc.getSheets().getByName(ohne).getCellRangeByName("$F$7").Formula = Formel_F7
	myDoc.getSheets().getByName(ohne).getCellRangeByName("$F$9").Formula = Formel_F9
	myDoc.getSheets().getByName(ohne).getCellRangeByName("$F$13").Formula = Formel_F13
	myDoc.getSheets().getByName(ohne).getCellRangeByName("$C$18").Formula = Formel_C18
Next datensatz								
End Sub
Kannst Du mir jetzt noch erklären:

1. Wie ich (am besten zusätzlich) den .pdf-Export der einezlnen Abrechnungen hinkriege und

2. diese neuen Dateien entweder in bereits vorhandene Verzeichnisse oder (noch besser) in zu erstellende Verzeichnisse schreiben kann (wenn gleichnamige Verzeichnisse noch nicht vorhanden sind).

3. Ich die neuen Tabellen statt an erster Stelle (0) nach hinten an der gerade letzte Stelle erstellen kann.

4. Schließlich bitte ich noch um einen Tipp, wie ich die gerade per Makro erstellten neuen Tabellen einfach überschreiben kann, insb. wenn ich eine nachträglich in der Vorlage geänderte Formatierung in alle Einzeltabellen übernehemen kann. Als ich probiert habe den Code einfach noch mal ausführen zu lassen kam eine Fehlermeldung.

Ich hoffe nicht unverschämt zu werden. Im Wesentlich wurde mir ja nun schon geholfen. :)

Gruß - Mr.Ioes

von Mr.Ioes » Mi, 20.10.2004 00:34

Hallo Stephan,

ich hab´ fast nach jedem Deiner Beiträge das Bedürfnis mich bei Dir zu bedanken, werde mir das jetzt aber weitgehend lassen, um nicht zu nerven. Es klappt jetzt anscheinden (jedenfalls wenn ich den Code schrittweise durchteste).

Du hast doch sicher auch eine Erklärung warum ich im Code-Editor (oder wie man das nennt) nicht mit dem Kontextmenü der rechten Maustaste kopieren und einfügen kann.

Gruß - Mr.Ioes

von Stephan » Di, 19.10.2004 22:04

Na, Du bist ja schneller als ich dachte - nun bist Du bereits auf ein erstes Detailproblem gestoßen, was ich so andeutete
detaillierte Erklärung ist etwas umfassend, es gibt hier im Forum irgendwo eine sehr treffende Beschreibung zu der Thematik von "Toxitom" suche nach Stichwort "ThisComponent"
Falls weiter nichts relevantes vorliegt hast Du das Makro aus der Basic-IDE gestartet. Entweder starte das Makro wenn das Tabellenblatt sichtbar ist oder verwende im Code statt:

Code: Alles auswählen

myDoc = stardesktop.currentcomponent
das hier:

Code: Alles auswählen

myDoc = ThisComponent
das sollte das Problem lösen.


Gruß
Stephan

von Mr.Ioes » Di, 19.10.2004 21:43

Warum bekomme ich in dieser (4.) Zeile immer einen "BASIC-Laufzeitfehler. Eigenschaft oder Methode nicht gefunden." ?

Code: Alles auswählen

wohnung = myDoc.getSheets().getByName("Mieterliste").getCellByPosition(0,datensatz-1)

von Mr.Ioes » Di, 19.10.2004 20:01

Zwischenfrage: Ich habe mir die (zweite) Tabelle (der Calc-Datei) "Mieterliste" als Datenquelle so eingebunden, dass ich deren Datenfelder mit F4 schön in der Ansicht der ersten (BK_EinzelAbrechnung-)Tabelle sehen kann und mir die Zelleninhalte bequem runterziehen kann. Kann ich mir irgendwie statt dem Zelleninhalt auch den Verweis darauf runterziehen (also z.Bsp. =Mieterliste.A2 statt dem Zelleninhalt 2951)?

von Stephan » Di, 19.10.2004 19:38

StarBasic? Gibt´s da Versionen oder so was und wie erkennt man die ggf.?)
Ja heißt wohl so, mir ist nicht bekannt das die Bezeichnung OOo-Basic gebräuchlich wäre. Meiner Kenntnis nach ist die Sprache für SO6 und SO7 gleich (OOo1.x/1.1.x) die Sprache von S05.2 ist (völlig) verschieden über andere Versionen weiß ich nichts.
myDoc = stardesktop.currentcomponent
'Bedeutet wohl die gerade verwendete Datei (oder Tabelle oder ?) wird auf - hä? - gesetzt


myDoc ist Objektvariable und das andere siehst Du im Grundsatz richtig - detaillierte Erklärung ist etwas umfassend, es gibt hier im Forum irgendwo eine sehr treffende Beschreibung zu der Thematik von "Toxitom" suche nach Stichwort "ThisComponent"
For datensatz = 2 To 8
'Für die "datensatz" genannte Variable (vom Typ ?) von 2 bis 8 (ist damit schon klar, dass "datensatz" eine Zeile einer Calc-Tabelle ist?
Typ ist Variant weil ich sie nicht deklariert habe (das weiß ich nur weil ich das gesamte Makro kenne denn die eine Zeile gibt diese Information nicht - nötig ist Variant jedoch nicht, ich war nur zu faul eine Deklaration in den Code zu schreiben)
Nein, damit ist nicht klar das es sich um eine Zeile handelt, der Inhalt von datensatz ist nur eine Zahl
mieter = myDoc.getSheets().getByName("Mieterliste").getCellByPosition(8,datensatz-1)
'Die (neue) Variable "mieter" (vom Typ?) ist, bzw. hat den Inhalt aus der Zelle mit der Position, bzw. Spalte 8 des ersten Datensatzes???
mieter ist vom Typ 'Object' der Inhalt von mieter entspricht somit dem Zellobjekt, das ist NICHT der Mietername (Zellinhalt) sondern im Prinzip die gesamte Zelle mit allen ihren Inhalten/Eigenschaften,das was Du meinst entspricht mieter.string

Die Zeile würde ich so wiedergeben (nicht ganz exakte Beschreibung):
myDoc --> das (Calc-)Dokument
getSheets -->Verweis auf alle Tabellenblätter
getByName("Mieterliste") -->Verweis auf das Blatt mit Namen Mieterliste
getCellByPosition(8,datensatz-1)--> Verweis auf bestimmte Zelle
8 entspricht Spalte 9 also I (Spalte A entspricht 0)
datensatz-1 entspricht der aktuellen Zeile, (Zeile 1 entspricht 0) falls also datensatz gerade 2 ist sind wir in Zeile 2 (im Code entspricht das 1 weil Zählung bei 0 beginnt)

Du könntest auch so schreiben:
For datensatz = 1 To 7
mieter = myDoc.getSheets().getByName("Mieterliste").getCellByPosition(8,datensatz)
Ich habe die entsprechende Spalte schon nach vorne als erste gezogen, weswegen es jetzt wohl heißen müsste "...(1,datensatz-1)" - oder?
wenn das in Spalte A steht dann (0,datensatz-1)

Gruß
Stephan

von Stephan » Di, 19.10.2004 18:58

Hallo Mr.Ioes,

Du warst ein bißchen schnell ich schreib gleich noch was erstmal:
Wie gibt man eigentlich überhaupt den Code ein (ich meine das was bei MS-Office der Visaul-Basic-Editor ist)?
Extras>Makros>Makro
dann in linkem Fenster scrollen bis Du den Namen des Dokuments siehst und den Ordner darunter doppelklicken und Du siehst ein Symbol, dieses markieren und rechts siehst Du die Makros, markiere eines und drücke Schaltfläche bearbeiten

diese Info gilt für Dokumentmakros (i.d.S. also auch für das Makro in dem Calc-Dokument das ich Dir geschickt habe), es gibt noch Makros in den Bibliotheken der Anwendung, diese "siehst" Du auch zunächst links und mußt Dich durchklicken

@Beni
Deine Darlegungen verstehe ich dem Grunde nach allerdings verwirrt mich der letzte Teil wo es irgendwie um Formular/Datenbank/Serienbrief geht, ist aber nicht so wichtig.
Jedoch der Vorschlag mit dem Kombinationsfeld ist gut, solltest Du dieses in Zelle A1 haben wollen gibt es zu dieser Problematik eine Beispieldatei --> hier im Programmierforum siehe meinen ganz obenstehenden Beitrag "Hinweise zur StarBasic-Programmierung" dort ist ein Link zu einer Beispieldatei "Combobox" der wird Dir weiterhelfen.

Gruß
Stephan

von Mr.Ioes » Di, 19.10.2004 18:44

Hallo Stephan,

ich muss Deinen Vorschlag gaaaanz langsam nachvollziehen, weil ich wie gesagt nicht Programmieren kann.

Der erste Teil Deines Codes:

Code: Alles auswählen

Sub Main
'So scheint man wohl eine Prozedur einzuleiten (wie heißt die Programmiersprache eigentlich richtig, StarBasic? Gibt´s da Versionen oder so was und wie erkennt man die ggf.?)

myDoc = stardesktop.currentcomponent
'Bedeutet wohl die gerade verwendete Datei (oder Tabelle oder ?) wird auf - hä? - gesetzt

For datensatz = 2 To 8				
'Für die "datensatz" genannte Variable (vom Typ ?) von 2 bis 8 (ist damit schon klar, dass "datensatz" eine Zeile einer Calc-Tabelle ist?

mieter = myDoc.getSheets().getByName("Mieterliste").getCellByPosition(8,datensatz-1)
'Die (neue) Variable "mieter" (vom Typ?) ist, bzw. hat den Inhalt aus der Zelle mit der Position, bzw. Spalte 8 des ersten Datensatzes???

...
Bitte meine dämlichen Nachfragen nicht als Kritik missverstehen. Vor allem bitte "...(8,datensatz-1)" erklären. Danke!

Übrigens möchte ich die Tabellen nicht nach den Mieternamen benennen sondern nach den 4-stelligen Wohnungsnummern, die ich beim unterjährigen Mieterwechsel ggf. per Hand direkt in der "Mieterliste"-Tabelle um einen Kleinbuchstaben ergänzen werde. Ich habe die entsprechende Spalte schon nach vorne als erste gezogen, weswegen es jetzt wohl heißen müsste "...(1,datensatz-1)" - oder?

Gruß - Mr.Ioes

von Mr.Ioes » Di, 19.10.2004 17:37

Hallo Beni,

ich komme einfach nicht dazu mir Deine Beiträge konzentriert durchzulesen, weil ständig das Telefon klingelt oder ich meine andere Arbeit zu erledigen habe. Deswegen bitte ich um Verständnis, dass ich dazu erst später und wahrscheinlich nur in Häpchen eingehen kann.

Ich hatte mittlerweile Stephan schon meine Entwurfsversion einer Calc-Datei zugesandt und von Ihm auch prompt Antwort erhalten (lieber Stephan bis hier hin, wird kaum einer mitlesen). Er hat mir auch schon einen Lösungsvorschlag gemacht, mit dem ich aber noch Verständnisprobleme habe, weil ich eigentlich nicht Programmieren kann.

@Stephan
Wie gibt man eigentlich überhaupt den Code ein (ich meine das was bei MS-Office der Visaul-Basic-Editor ist)?

Edit: Ok wohl über Makros -> Makro -> und dann Bearbeiten. Aber Du siehst, bei mir fehlen einfach die Grundlagen. :cry:

von Stephan » Mo, 18.10.2004 14:48

Verstehe ich Dich richtig, gibt es einen Weg, in einem Tabellendokument, welches eine Tabelle eines anderen spreadsheets als Verknüpfung enthält, diese Tabelle direkt zu ändern, sodass die Aenderungen auch in der 'Quelle' nachgeführt werden?
mmh... mein Zitat bezog sich hier schon auf Datenbank im Wortsinn und konkret dBase-Format. Da Du jedoch Calc-Tabellen als dBase speichern kannst sollte das möglich sein. Ich schreibe "sollte" weil ich es gerade getestet habe und es nicht funktioniert. Ich war der Meinung das es gestern mit der Literaturdatenbank funktioniert hätte, da ich durch das Probieren gerade das System zerwürgt habe und es von Image wiederherstellen mußte gehe ich davon aus das ich fälschlicherweise gestern die Literaturdatenbank in calc geöffnet und nicht verknüpft hatte.

Also es war im Konkreten wohl ein Fehler meinerseits ... Entschuldigung :oops:

Ich darf allerdings die Information geben das sich die Situation in Bezug auf Datenbanken in der neuen Version 2.0 stark verbessern wird, z.B. soll (wird) es dann möglich sein auf eine Calc-Tabelle die als Datenquelle angemeldet ist auch schreibend zuzugreifen (ich habe das persönlich noch nicht getestet, die Information stammt aus zweiter Hand).

Gruß
Stephan

von Stephan » So, 17.10.2004 23:03

Nachtrag:

Ich sage mal noch was zu Datenbank:
erstens kannst Du die prinzipiell in Calc öffnen und bearbeiten einmal über öffnen und einmal über Einfügen>Tabelle -->aus Datei erstellen. In letzterem Fall kannst Du sogar verknüpfen so das Du die Datenbank sowohl mit der Ursprungsanwendung als auch mit Calc bearbeiten kannst und die Daten immer aktuell sind. Hast Du die Daten so im Calc eingebunden sind sie frei in Calc verwendbar, im Verknüpfungsfall stellt Calc sogar in gewissem Sinne ein(e) reine GUI der Datenbank dar. Du kannst das mit der Literaturdatenbank ausprobieren und wirst sehen das es funktioniert. Natürlich gibt es andere Datenbankformate als dBase aber das ist doch kein Grundsatzproblen sondern nur eine Frage des Vorgehens...

Zum "Seriendruckfeld":
Öffne neue Calc-Datei
erstelle in Tabelle2 Zeile 1 die Überschriften für die "datenfelder" und trage ab Zeile 2 die jeweiligen Datensätze ein
Du kannst jetzt alle Zellen der Tabelle 2 referenzieren (in Tabelle1 oder anderen Tabellen) und damit Berechnungen anstellen, aber beschränke Dich mal auf Zeile 2 (weil Du ja "seriendruck" willst macht das Sinn)
Wenn Du nun irgendwo eine Hilfszeile anlegst (Du kannst auch darauf verzichten und alles per Makro machen) kannst Du doch zweifelsfrei eine Variable hinterlegen welche sagt in welcher Zeile der Tabelle2 sich die gerade aktuellen Daten befinden, d.h. der aktuelle Datensatz
Ohne Probleme kannst Du ein Makro schreiben, was durch die Datensätze (Zeile in Tabelle2) interiert und alle Berechnungen "anpaßt" und dann entweder eine neue zusätzliche Tabelle mit dem aktuellen Satz anlegt oder ein Dokument erzeugt was die Tabelle mit dem gerade aktuellen Berechnungen/Ergebnissen für diesen Satz enthält und dieses speichert oder ebend die Tabelle in gerade aktuellen Zustand drucken

Prinzip:

Code: Alles auswählen

'erster Datensatz in Tabelle 2 Zeile 2 letzter Zeile 100 
For Hilfsvariable = 2 To 100
	'hier code zum anpassen der Berechnungstabellen
	'eigentlich ist nur Änderung einer Zahl nötig
	'wenn Du Formeln richtig formulierst
	'
	'die aktualisierten Tabelle(n):
	'drucken  oder
	'speichern (in neuem Dokument) oder
	'zusätzliche Tabellenblätter erzeugen
	'(im gleichen Dokument)
Next Hilfsvariable
ein solcher Code wirft keine Probleme auf. Du hast hiermit eigentlich vollständig das erreicht was ein Seriendruckfeld im Writer bewirken könnte.

Gruß
Stephan

Nach oben