So was wie Serienbriefe mit Calc?
Moderator: Moderatoren
So was wie Serienbriefe mit Calc?
Hallo,
ich habe eine Tabelle, die ich gerne mit unterschiedlichen Datensätzen, bzw. den Datenfeldern aus einer anderen Tabelle füllen würde, um die Tabelle schließlich als so eine Art Serienbrief mit den ganzen unterschiedlichen Versionen auszudrucken.
Geht das und wenn ja wie? Wäre echt nett, wenn Ihr mir ein wenig auf die Sprünge helfen könntet.
Gruß - Mr.Ioes
ich habe eine Tabelle, die ich gerne mit unterschiedlichen Datensätzen, bzw. den Datenfeldern aus einer anderen Tabelle füllen würde, um die Tabelle schließlich als so eine Art Serienbrief mit den ganzen unterschiedlichen Versionen auszudrucken.
Geht das und wenn ja wie? Wäre echt nett, wenn Ihr mir ein wenig auf die Sprünge helfen könntet.
Gruß - Mr.Ioes
Geht das und wenn ja wie?
?? (irgendeinen Weg wird es geben)
um die Tabelle schließlich als so eine Art Serienbrief mit den ganzen unterschiedlichen Versionen auszudrucken
Ein Serienbrief hat zum Teil konstanten und zum anderen variablen Inhalt, was soll denn bei den Serientabellen variabel und was konstant sein? Und handelt es sich bei 'Tabelle' um Tabellenblatt oder Tabellendokument, anders gesagt es kann sein das eine Tabelle existiert und hiervon weitere abgeleitet werden sollen die dann im gleichen Dokument stehen. Sollen die anderen Tabellen nur erzeugt oder gleich gedruckt werden (oder manuell drucken)...
Gruß
Stephan
?? (irgendeinen Weg wird es geben)
um die Tabelle schließlich als so eine Art Serienbrief mit den ganzen unterschiedlichen Versionen auszudrucken
Ein Serienbrief hat zum Teil konstanten und zum anderen variablen Inhalt, was soll denn bei den Serientabellen variabel und was konstant sein? Und handelt es sich bei 'Tabelle' um Tabellenblatt oder Tabellendokument, anders gesagt es kann sein das eine Tabelle existiert und hiervon weitere abgeleitet werden sollen die dann im gleichen Dokument stehen. Sollen die anderen Tabellen nur erzeugt oder gleich gedruckt werden (oder manuell drucken)...
Gruß
Stephan
Hallo Stephan,
also es geht um Betriebskostenabrechnungen. Ich wünsche mir in einer Calc-Tabelle in bestimmte Zellen nur Platzhalter für Daten (Tabellenspalten) aus einer anderen Tabelle oder ggf. sogar einer (ACCESS-)Datenbank einzufügen. Ob die Tabelle jetzt aus einem anderen Tabellenblatt derselben Datei stammt (was mir am liebsten wäre) oder aus einer anderen Datei oder irgendwie aus demselben Globaldokument (womit ich noch nie gearbeitete habe und nicht genau weiß wie das geht und was das soll) oder aus einer Datenbank ist mir letztlich egal.
Beispiel: Ich habe eine formatierte Calc-Betriebsksoten-Einzelabrechnungstabelle in die ich für jede Mieter-Wohnungskombination individuelle Daten eingeben muss, wie z.Bsp. WohnungsNr., Wohnfläche, Mietername, Einzug- und Auszugsdatum u.s.w.
Jetzt würde ich gern für diese Daten Datensätze in einer anderen Tabelle bilden und zwar so, dass diese beim Ausdruck der formatierten Betriebskosten-Einzelabrechnugnstabelle eingefügt und mit ihnen gerechnte wird.
Falls es Dir hilft kann ich Dir auch gerne diese Tabelle (noch im Entwursstadium) mal schicken.
Gruß - Mr.Ioes
also es geht um Betriebskostenabrechnungen. Ich wünsche mir in einer Calc-Tabelle in bestimmte Zellen nur Platzhalter für Daten (Tabellenspalten) aus einer anderen Tabelle oder ggf. sogar einer (ACCESS-)Datenbank einzufügen. Ob die Tabelle jetzt aus einem anderen Tabellenblatt derselben Datei stammt (was mir am liebsten wäre) oder aus einer anderen Datei oder irgendwie aus demselben Globaldokument (womit ich noch nie gearbeitete habe und nicht genau weiß wie das geht und was das soll) oder aus einer Datenbank ist mir letztlich egal.
Beispiel: Ich habe eine formatierte Calc-Betriebsksoten-Einzelabrechnungstabelle in die ich für jede Mieter-Wohnungskombination individuelle Daten eingeben muss, wie z.Bsp. WohnungsNr., Wohnfläche, Mietername, Einzug- und Auszugsdatum u.s.w.
Jetzt würde ich gern für diese Daten Datensätze in einer anderen Tabelle bilden und zwar so, dass diese beim Ausdruck der formatierten Betriebskosten-Einzelabrechnugnstabelle eingefügt und mit ihnen gerechnte wird.
Falls es Dir hilft kann ich Dir auch gerne diese Tabelle (noch im Entwursstadium) mal schicken.
Gruß - Mr.Ioes
Hallo Mr.Ioes,
also Globaldokument bezieht sich nur auf Writer. Ich habe nun in etwa eine Vorstellung was Du willst, ich kann jedoch keine allgemeine Antwort geben, zumal ich annehme das das Ganze später noch in einzelne Writer-Dokumente umgesetzt werden muß, die gedruckt und verschickt werden können. Da Du Änderungen/Eingaben in dem Calc-Dokument direkt vornehmen werden willst, würde sich das prinzipiell als Datenquelle für einen Seriendruck einbinden lassen, irgendwie habe ich aber das Gefühl das das manuelle Erzeugen der Briefe direkt mittels Makro in diesem Falle einfacher oder/und flexibler zu bewerkstelligen wäre, kurzum:
Ich habe die nächsten Tage etwas wenig Zeit, aber falls das Ganze nicht eilig ist würde ich mal einen Blick darauf werfen, wenn Du es mir zuschickst. Eine Lösung will ich hier nicht versprechen, aber vielleicht würde Dich eine Anregung schon weiterbringen ...
(Ich schicke Dir eine Email-Adresse über das Forum.)
Gruß
Stephan
also Globaldokument bezieht sich nur auf Writer. Ich habe nun in etwa eine Vorstellung was Du willst, ich kann jedoch keine allgemeine Antwort geben, zumal ich annehme das das Ganze später noch in einzelne Writer-Dokumente umgesetzt werden muß, die gedruckt und verschickt werden können. Da Du Änderungen/Eingaben in dem Calc-Dokument direkt vornehmen werden willst, würde sich das prinzipiell als Datenquelle für einen Seriendruck einbinden lassen, irgendwie habe ich aber das Gefühl das das manuelle Erzeugen der Briefe direkt mittels Makro in diesem Falle einfacher oder/und flexibler zu bewerkstelligen wäre, kurzum:
Ich habe die nächsten Tage etwas wenig Zeit, aber falls das Ganze nicht eilig ist würde ich mal einen Blick darauf werfen, wenn Du es mir zuschickst. Eine Lösung will ich hier nicht versprechen, aber vielleicht würde Dich eine Anregung schon weiterbringen ...
(Ich schicke Dir eine Email-Adresse über das Forum.)
Gruß
Stephan
Hallo Stephan,
vielen Dank für Dein nettes Angebot!
Nur noch mal (ggf. auch für andere) zur Erläuterung: Ich will die Calc-Tabelle eigentlich schon direkt ausdrucken und das Begleitschreiben gesondert im Writer erstellen.
Es geht mir (eigentlich nicht nur für dieses konkrete Anwendungsbeispiel) darum, Datensatzinformtaionen in Zellen einzufügen und damit zu rechnen, so ähnlich wie das beim Serienbrief mit Einfügen -> Feldbefehle -> Datenbank -> Seriendruckfeld geht.
Gruß - Mr.Ioes
vielen Dank für Dein nettes Angebot!
Nur noch mal (ggf. auch für andere) zur Erläuterung: Ich will die Calc-Tabelle eigentlich schon direkt ausdrucken und das Begleitschreiben gesondert im Writer erstellen.
Es geht mir (eigentlich nicht nur für dieses konkrete Anwendungsbeispiel) darum, Datensatzinformtaionen in Zellen einzufügen und damit zu rechnen, so ähnlich wie das beim Serienbrief mit Einfügen -> Feldbefehle -> Datenbank -> Seriendruckfeld geht.
Gruß - Mr.Ioes
mein Hinweis auf Writer hatte nur den Hintergrund das Du dort bessere Formatierungsmöglichkeiten hast, aber ist ja wohl ohnehin zunächst nicht Dein KernproblemNur noch mal (ggf. auch für andere) zur Erläuterung: Ich will die Calc-Tabelle eigentlich schon direkt ausdrucken und das Begleitschreiben gesondert im Writer erstellen.
Ja nun ist das aber etwas verwirrend, ursprünglich hattest Du Tabellendokument oder Datenbank erwogen wobei doch folgendes ausdrückt das Dir eine Calc-Tabelle eigentlich lieber wäre:Es geht mir (eigentlich nicht nur für dieses konkrete Anwendungsbeispiel) darum, Datensatzinformtaionen in Zellen einzufügen und damit zu rechnen, so ähnlich wie das beim Serienbrief mit Einfügen -> Feldbefehle -> Datenbank -> Seriendruckfeld geht.
Mir ist irgendwie unklar wo Du den Unterschied zwischen einem Datenfeld in einer Datenbank und einer Zelle in einer Calc-Tabelle prinzipiell siehst? Und wenn Du eigentlich Tabellen (calc) zur Speicherung der Daten bevorzugen willst dann sage doch mal was denn der Unterschied zwischen einem mit einem Datenbankfeld verknüpften Feld in einem Writerdokument und einem Verweis der Art $Tabelle1.A1 in einer calc-Tabelle sein soll? Sowohl die Datenbank als auch die Tabelle enthalten Daten die Du referenzierst, allenfalls ist doch die optische Darstellung der Referenzen anders. Was geht denn mit dem einem was mit dem anderen nicht geht? Seriendruckfelder wären in diesem Sinne gleiche Zelladressen in verschiedenen Tabellen was doch ganz einfach zu bewerkstelligen wäre ... (auch andere Lösungen sind denkbar ist nur EIN Vorschlag)also es geht um Betriebskostenabrechnungen. Ich wünsche mir in einer Calc-Tabelle in bestimmte Zellen nur Platzhalter für Daten (Tabellenspalten) aus einer anderen Tabelle oder ggf. sogar einer (ACCESS-)Datenbank einzufügen. Ob die Tabelle jetzt aus einem anderen Tabellenblatt derselben Datei stammt (was mir am liebsten wäre) oder aus einer anderen Datei oder irgendwie aus demselben Globaldokument (womit ich noch nie gearbeitete habe und nicht genau weiß wie das geht und was das soll) oder aus einer Datenbank ist mir letztlich egal.
Vielleicht verstehe ich es besser wenn Du mir Dein Dokument schickst, aber im Moment ist mir das unklar. Oder habe ich etwas grundsätzliches übersehen?
Gruß
Stephan
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:
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
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
Gruß
Stephan
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.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?
Also es war im Konkreten wohl ein Fehler meinerseits ... Entschuldigung

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
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.
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.

Hallo Stephan,
ich muss Deinen Vorschlag gaaaanz langsam nachvollziehen, weil ich wie gesagt nicht Programmieren kann.
Der erste Teil Deines Codes:
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
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???
...
Ü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
Hallo Mr.Ioes,
Du warst ein bißchen schnell ich schreib gleich noch was erstmal:
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
Du warst ein bißchen schnell ich schreib gleich noch was erstmal:
Extras>Makros>MakroWie gibt man eigentlich überhaupt den Code ein (ich meine das was bei MS-Office der Visaul-Basic-Editor ist)?
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
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.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
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"
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)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?
Nein, damit ist nicht klar das es sich um eine Zeile handelt, der Inhalt von datensatz ist nur eine Zahl
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.stringmieter = 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???
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)
wenn das in Spalte A steht dann (0,datensatz-1)Ich habe die entsprechende Spalte schon nach vorne als erste gezogen, weswegen es jetzt wohl heißen müsste "...(1,datensatz-1)" - oder?
Gruß
Stephan
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)?
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)
Na, Du bist ja schneller als ich dachte - nun bist Du bereits auf ein erstes Detailproblem gestoßen, was ich so andeutete
das hier:
das sollte das Problem lösen.
Gruß
Stephan
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: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"
Code: Alles auswählen
myDoc = stardesktop.currentcomponent
Code: Alles auswählen
myDoc = ThisComponent
Gruß
Stephan