Werte aus Zellen in andere Datei

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

manu19811
Beiträge: 6
Registriert: Mi, 18.01.2017 11:10

Werte aus Zellen in andere Datei

Beitrag von manu19811 »

Hallo,

ich habe ein Kleingewerbe und schreibe Angebote / Rechnungen mit Calc. und exportiere diese dann als PDF. Das klappt bisher wunderbar.

In der Quelldatei (AGRG.ods) gibt es diverse Tabellenblätter (Angebot, Rechnung, diverse Hilfsblätter). Jedes Mal, wenn ich (per Makro) aus einem Angebot eine Rechnung mache, wird im Rechnungs-Tabellenblatt lediglich eine neue Rechnungsnummer vergeben. Alle anderen Zellen im Rechnungs-Tabellenblatt sind bereits mit Formeln ausgestattet, welche die Werte automatisch vom Angebots-Tabellenblatt holen.

Nun möchte ich das Ganze um Folgendes erweitern:

Nun suche ich eine Möglichkeit diverse Zellwerte aus der Quelldatei (F:\AGRG.ods) in eine andere Datei (F:\RG-LISTE.ods) zu übertragen um am Jahresende nicht mehr einzeln jede PDF-Rechnung öffnen und in einer Tabelle addieren zu müssen. Es sollen Alle rechnungsrelevanten Daten enthalten sein, also:
Firma | Name | Straße | PLZ, Ort | RG-NR | DATUM | NETTO VK | USt. | BRUTTO VK | NETTO EK | VSt. | BRUTTO VK | GEWINN | USt. Abzuf.

Dazu habe ich in der Quelldatei (AGRG.ods) bereits ein neues Tabellenblatt (RG-Daten) angelegt, in welchem diese Daten in den Zellen A2 bis N2 per Formel (z.B. =Rechnung.D28) abgefragt werden. Auch die andere Datei (F:\RG-LISTE.ods) habe ich bereits erstellt.

In diese neue Datei (RG-LISTE.ods) müssten die Daten vom Tabellenblatt "RG-Daten" per Makro in die nächste freie Zeile von A - N eingefügt werden. Am besten ohne, dass sie offen sein muss oder jedes Mal geöffnet wird.

Hatte noch vergessen zu erwähnen, dass die Datei RG-Liste.ods 12 verschiedene Tabbellenblätter (Januar, Februar, März, etc.) hat und die Daten dann je nach Monat in die nächste freie Zeile des entsprechenden Tabellenblatts (Januar, Februar, März, usw.) der Zieldatei kopiert werden sollen. Bereits jetzt gibt es in der Quelldatei in dem Rechnungstabellenblatt eine Formel, welche den entsprechenden Monat ausliest und diese Variable (Januar, Februar, März, usw.) in Zelle U2 ausgibt.

Freue mich über jede Hilfe....

Vielen Dank im Voraus

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

Re: Werte aus Zellen in andere Datei

Beitrag von mikeleb »

Hallo,
Am besten ohne, dass sie offen sein muss oder jedes Mal geöffnet wird.
Das wird nicht funktionieren, könnte aber im Hintergrund passieren.
Hatte noch vergessen zu erwähnen, dass die Datei RG-Liste.ods 12 verschiedene Tabbellenblätter (Januar, Februar, März, etc.) hat
Dieses Design ist eher ungünstig. Was spräche dagegen alle Rechnungen auf einem Tabellenblatt zu sammeln. Daraus ließen sich notwendige Auswertungen (nach Monat, nach Kunde, ...) dann schnell realisieren.
Gruß,
mikeleb
Hiker
******
Beiträge: 591
Registriert: Mo, 08.09.2014 21:34
Wohnort: Berlin

Re: Werte aus Zellen in andere Datei

Beitrag von Hiker »

manu19811 hat geschrieben: Mi, 09.02.2022 14:48 ...
Dazu habe ich in der Quelldatei (AGRG.ods) bereits ein neues Tabellenblatt (RG-Daten) angelegt, in welchem diese Daten in den Zellen A2 bis N2 per Formel (z.B. =Rechnung.D28) abgefragt werden. Auch die andere Datei (F:\RG-LISTE.ods) habe ich bereits erstellt.

In diese neue Datei (RG-LISTE.ods) müssten die Daten vom Tabellenblatt "RG-Daten" per Makro in die nächste freie Zeile von A - N eingefügt werden. Am besten ohne, dass sie offen sein muss oder jedes Mal geöffnet wird.
Vorschläge zur Vereinfachung: Führe die Liste direkt in der Quelldatei AGRG. Wenn ich das richtig sehe rufst Du immer diese Datei auf um eine Rechnung zu schreiben. Also könntest Du hier ein zusätzliches Blatt "Liste" einfugen, das bei jeder Rechnung eine neue Zeile bekommt. Ich habe so etwas mal realisiert, indem ich immer eine neue erste Zeile eingefügt habe, dann dort die Rechnungsdaten hinkopiert. Spart die Suche nach der ersten freien Zeile. Das setzt aber voraus, dass Du irgendeinen Clear-Button hast, um mit einer neuen Rechnung zu beginnen, oder speicherst Du nie und musst deshalb extern protokollieren?

Dieses neue Tabellenblatt "Liste" kann dann als Datenquelle Deiner neuen Datei RG-Liste angemeldet werden. Damit muss diese Datei wirklich nicht zwischendurch geöffnet werden, sondern holt sich die Daten erst bei Bedarf, wenn Du sie öffnest (Menü:Daten -> Bereich aktualisieren

(Und wenn man das Protokoll direkt in eine Mini-Datenbank schreibt, könnte man sogar entsprechende Abfragen als Datenquellen nutzen. Ich hab das zwar noch nicht mit dBase probiert, aber die eingebaute dBase Unterstützung müsste reichen...)
Libre Office 6.3.1 (Win 10 Pro) / Libre Office 6.0.7 (Win8.1 Pro, Win 7 Pro) / AOO (Win 7)
manu19811
Beiträge: 6
Registriert: Mi, 18.01.2017 11:10

Re: Werte aus Zellen in andere Datei

Beitrag von manu19811 »

Hallo Mikeleb, Hallo Hiker,

ich danke Euch für Eure Antworten bzgl meines Problems. Ganz so einfach ist es leider nicht. Ein zusätzliches Tabellenblatt ist aus folgendem Grund nicht möglich:

Meine AGRG.ods ist folgendermaßen aufgebaut (dazu muss ich ein wenig ausholen):

Auf meiner Webseite können Kunden diverse Produkte auswählen, konfigurieren und anfragen. Diese Anfrage (inklusive aller konfigurierten Produkte, Kundendaten, etc.) kommt per Mail und ich kann Diese mit nur einem Klick auf ein Button (da ist ein Makro hinterlegt), welcher sich in der AGRG.ods befindet direkt in das Angebot einfügen. Habe ich die Preise in meiner Preisliste (auch ein Tabellenblatt), ist bereits jetzt das Angebot fertig und kann mit einem weiteren Klick auf einen anderen Button als PDF-Datei ausgegeben und mit einem Standard-Text per Mail versandt werden.

Sind die entsprechenden Produkte nicht angelegt oder Fehlen bei mir Preise, kann ich diese mit einem weiteren Klick auf einen anderen Button beim Großhändler per Mail anfragen.

Dieser übermittelt mir die Preise (dauert manchmal 1...2 Tage) auch über meine Webseite über ein spezielles Formular, welche ich dann wiederrum mit einem weiteren Klick auf einen Button in die Preisliste übernehme.

Wie Ihr merkt: Ich bin ein ganz großer Freund von Automatismen......

Ist das Angebot nun fertig wird es, wie oben erwähnt, nicht nur per Makro als .pdf (Angebotsnummer_Firmenname_Kundenname.pdf) abgespeichert und versandt, sondern auch als .ods (Angebotsnummer_Firmenname_Kundenname.ods) gespeichert. Zudem werden alle anfragebezogenen Felder danach gelöscht (sozusagen für ein frisches Angebot) und die AGRG.ods wieder "jungfräulich" abgespeichert. Dies hat den Vorteil, dass sich meine AGRG.ods nicht übermäßig aufbläht und ich zu jeder Zeit ein neues Angebot anlegen oder bereits angelegte Angebote (.ods) abändern kann.

Stimmt nun ein Kunde einem Angebot zu, öffne ich genau diese "Angebotsnummer_Firmenname_Kundenname.ods" (und nicht die AGRG.ods) und klicke auf den Button "Rechnung erstellen". Ein Makro liest dann aus dem Rechnungsverzeichnis (dort liegen nur die PDF-Rechnungen drin) die Dateinamen aus um daraus eine neue Rechnungsnummer (letzte Rechnungsnummer + 1) zu generieren und öffnet mir dann die Rechnungsansicht (Tabellenblatt Rechnung) mit der fertigen Rechnung. Hier kann ich alles noch einmal kontrollieren und in ein Fenster ggf. einen individuellen Text oder eine andere andere Rechnungsadresse eintragen. Ist das geschehen, drücke ich auf einen Button "Rechnung als PDF". Die Rechnung wird als PDF im entsprechenden Ordner ausgegeben und direkt per Mail mit Standardtext versandt.

Mein Konstrukt kann noch mehr - aber das würde jetzt zu weit führen und hat mit der eigentlichen Fragestellung nicht viel zu tun....

Somit müsste es irgendwie möglich sein, die Daten aus dem Tabellenblatt "RG-Daten" der Datei "Angebotsnummer_Firmenname_Kundenname.ods, in die Datei "RG-Liste.ods" zu bekommen wenn ich den Button "Rechnung als PDF" anklicke. Diese Funktion soll dann zusätzlich zum Speichern und Versenden der PDF ausgeführt werden.

Hätte auch einen SQL-Server (Raspberry mit MariaDB) hier stehen, den ich eigentlich für mein Hobby (Bin Funkamateur) verwende - aber eine neue Datenbank wäre schnell erstellt. Vielelicht geht sowas über diesen Umweg?

Viele Grüße
Manu
manu19811
Beiträge: 6
Registriert: Mi, 18.01.2017 11:10

Re: Werte aus Zellen in andere Datei

Beitrag von manu19811 »

Hi nochmal,

habe gerade mal 'ne entsprechende Datenbank erstellt und die Datenquelle in Calc eingebunden. Wenn ich mir mit F4 die Datenquelle anzeigen lasse, sehe ich die Tabelle mit den entsprechenden Spalten (RG-NR | DATUM | FIRMA | NAME | etc.)

Eigentlich wäre es ein Leichtes nun die entsprechenden Daten in die Felder zu kopieren, aber wenn ich den entsprechenden Bereich (A2 - N2) auswähle, kopiere und dann in die Datenbank einfügen möchte, wird nichts eingefügt. Das Feld "Einfügen" ist auch grau und man kann nicht drauf klicken.

Ginb es einen Trick, mit dem ich einen Zellbereich (A2 - N2) so wie er ist in die entsprechenden Zellen der Datenbank kopieren kann?

Viele Grüße
Manu
mikeleb
*******
Beiträge: 1316
Registriert: Fr, 09.12.2011 16:50

Re: Werte aus Zellen in andere Datei

Beitrag von mikeleb »

Hallo,
vielleicht hilft dir die Anleitung weiter
https://www.familiegrosskopf.de/robert/ ... dung.xhtml
Gruß,
mikeleb
jasch
**
Beiträge: 49
Registriert: So, 16.01.2022 14:30
Wohnort: Berlin

Re: Werte aus Zellen in andere Datei

Beitrag von jasch »

Hallo,
Datenbank
Robert ist hier aktiv in der Rubrik Base / SQL, vielleicht liest er andere Rubriken nicht.

Vielleicht ist es gut, wenn ein Moderator Manu's Datenbankfrage dort hin verknüpft?


Gruß
J.
Hiker
******
Beiträge: 591
Registriert: Mo, 08.09.2014 21:34
Wohnort: Berlin

Re: Werte aus Zellen in andere Datei

Beitrag von Hiker »

manu19811 hat geschrieben: Do, 10.02.2022 17:06...
Ginb es einen Trick, mit dem ich einen Zellbereich (A2 - N2) so wie er ist in die entsprechenden Zellen der Datenbank kopieren kann?
...
Ich mache so etwas häufig, aber nur mit kompletten Zeilen und die Zeile1 enthält die Header-Info.

Nimm Dir fur einen ersten Versuch mal ein leeres Tabellenblatt in Calc. Wähle die Tabelle in Base an und kopiere die Tabelle (Kontextmenü). Nun in Calc einfügen, wenn A1 aktiviert ist (Bitte nicht "rüberziehen", dabei wird eine Verknüpfung erstellt.) Du hast jetzt die Header-Info, in der ersten Zeile und eventuell den bisherigen Inhalt der Test-Datenbank darunter. Alle Zeilen ausser der ersten löschen, falls da was steht.

Wenn Du jetzt Eintrage in diese Tabelle machst, kannst du das ganze Tabellenblatt markieren, kopieren und in Base über der Zieltabelle im Kontextmenu einfugen wählen. Es erscheint ein Import-Fenster, in dem man angibt, dass die Daten an die bestehende Tabelle angehängt werden sollen. Auf der nächsten Stufe kann man noch die Felder zuordnen, was aber durch die identische Struktur hier nicht nötig ist und nach "abschliessen" sollten die Daten in de Bade/MySQL-Tabelle sichtbar sein.

Vorsicht mit scheinbar leeren Tabellenzeilen zB mit formel wenn(bedingung;"";"Text"). Diese werden alle mitkopiert und können irritieren, weil es so aussieht, als ob da keine Datensatze sind, aber Datenbanken unterscheiden zwischen NULL und "" (Tabellenkalkulationen auch... )

J.
Libre Office 6.3.1 (Win 10 Pro) / Libre Office 6.0.7 (Win8.1 Pro, Win 7 Pro) / AOO (Win 7)
manu19811
Beiträge: 6
Registriert: Mi, 18.01.2017 11:10

Re: Werte aus Zellen in andere Datei

Beitrag von manu19811 »

Moin J. :)

Vielen Dank für Deine ausführliche Antwort. Das funktioniert tadellos.

Allerdings würde ich mir gern' den Umweg über Base sparen. Gibt's hier evtl. ne Möglichkeit die Daten per Makro in Calc in die Datenbank zu bringen?

Wenn ich in Calc auf der Datenquellen-Ansicht einen Rechtsklick auf die Tabelle mache, gibt's leider kein "Einfügen. Es ist zwar möglich, den entsprechenden Bereich per Maus in die Tabelle zu ziehen wobei auch der Import-Assistent (Tabelle kopieren) erscheint und die Daten entsprechend in die Datenbank eingetragen werden, allerdings kann ich das ganze nicht mit dem Macro-Recorder aufnehmen bzw. das aufgenommene führt die Funktion nicht aus.

Gibt's hier vielleicht einen Trick?

Have a nice day! :)

Viele Grüße
Manu
Toxitom
********
Beiträge: 3768
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: Werte aus Zellen in andere Datei

Beitrag von Toxitom »

Hei Manu,
manu19811 hat geschrieben: Fr, 11.02.2022 09:15 Gibt's hier evtl. ne Möglichkeit die Daten per Makro in Calc in die Datenbank zu bringen?
Natürlich. Per Makro kannst Du quasi alles machen - ist ja ne Programmiersprache und die API von LibreOffice ist offen.

Frage ist hier eher: Kannst Du das? Kannst Du mit einer Programmiersprache (Basic, Python oder ähnliches) umgehen? Kennt Du SQL und die Möglichkeiten der Datenbank? Das alles erlernt man nicht mal "so eben nebenbei";) Kann sich aber lohnen..hihi.

In dem Fall schlage ich vor, du beendest diesen Thread hier und öffnest einen neuen passenden im Bereich Makros, möglichst natürlich mit konkreten Fragen/Aufgabenstellungen. Das Forum gibt Hilfestellungen zur Selbthilfe - ud liefert kaum Komplettlösungen :)

Viele Grüße
Tom
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
manu19811
Beiträge: 6
Registriert: Mi, 18.01.2017 11:10

Re: Werte aus Zellen in andere Datei

Beitrag von manu19811 »

Hey Tom,

dann probiere ich dort mal mein Glück. Vielen Dank an alle für die tatkräftige Unterstützung! :)

Viele Grüße
Manu
Hiker
******
Beiträge: 591
Registriert: Mo, 08.09.2014 21:34
Wohnort: Berlin

Re: Werte aus Zellen in andere Datei

Beitrag von Hiker »

manu19811 hat geschrieben: Fr, 11.02.2022 09:15 ...
Allerdings würde ich mir gern' den Umweg über Base sparen. Gibt's hier evtl. ne Möglichkeit die Daten per Makro in Calc in die Datenbank zu bringen?
...
Die Datenbank-Komponente von LibreOffice ist Base. Die zu umgehen ist dank Python als Macro-Sprache zwar fast problemlos möglich, aber wenn Du das könntest, kannst Du auch gleich auf LibreOffice verzichten.

Wenn Du Base nicht ausrufen willst, sondern ein Macro verwenden kannst Du mal im Base-Handbuch nachsehen. Dort ist ein Makro beschrieben, mit dem Daten von einer Datenbank in eine andere übernommen werden (Kapitel Macros f. datenbank-Aufgaben, wenn ich mich recht erinnere. Ich habe mir das mal angepasst.) Das Verfahren ist naturlich auch für Calc-Tabellen als Datenquelle möglich, allerdings muss man damit rechnen, dass gelegentlich Datentypen nicht passen, da Calc wesentlich weniger kontrolliert und verschiedene Datentypen in einer Spalte nicht bemängelt.

Ich versuche mal das Kapitel rauszusuchen wenn ich am Rechner bin.

Mfg, Jörn
Libre Office 6.3.1 (Win 10 Pro) / Libre Office 6.0.7 (Win8.1 Pro, Win 7 Pro) / AOO (Win 7)
Antworten