BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Brief automatisiert mit Daten füllen

Alles zur Programmierung im LibreOffice.
Stefan22
Beiträge: 6
Registriert: Mi 8. Dez 2021, 23:52

Brief automatisiert mit Daten füllen

Beitrag von Stefan22 » Do 9. Dez 2021, 00:08

Hallo zusammen,

ich soll aus einer Anwendung heraus eine vorhandene ODT-Datei mit Daten füllen und speichern. Mit OO hat das wohl früher funktioniert, indem man einen DDE-Kanal auf "soffice","system","brief.odt" öffnete und Makros absetzte wie ThisComponent.TextSections.GetByName("AktDatum").Anchor.String="08.12.2021". In brief.odt gab es natürlich einen korrspondierenden Bereich namens AktDatum.

Mit LibreOffice kann ich zwar immer noch den DDE-Kanal öffnen, aber es passiert nichts, und ich bekomme nicht mal eine Fehlermeldung. Vermutlich ist DDE Technik von vorgestern, aber ich finde in er LO-Doku einfach nichts Passendes.

Hat mir bitte jemand einen Tipp, wo ich in der Doku schauen könnte bzw. mit welcher Technik ich diese Aufgabe lösen könnte? Ich bin LibreOffice-Anwender seit es StarOffice hieß und unter OS/2 lief... :ugeek:
aber ich hab es noch nie anprogrammieren müssen.

Danke und Grüße
Stefan

Wanderer
Beiträge: 895
Registriert: Di 11. Feb 2014, 20:03
Wohnort: Berlin

Re: Brief automatisiert mit Daten füllen

Beitrag von Wanderer » Do 9. Dez 2021, 07:41

Hallo,

eigentlich macht man das, was Du beschreibst einfach als Serienbrief.

Wenn es DDE sein soll, schau mal hier rein:
http://www.ooowiki.de/DDE.html

Habe ich zwar seit "vorgestern" nicht mehr verwendet, funktioniert aber auch unter Libre-Office. Ich habe aber eine Calc Tabelle als Quelle der 6 Veranstaltungsdaten verwendet (nächster Termin in der ersten Zeile) um die üblichen Flyer, Hinweise, Anzeigen etc. mit Daten zu füllen. Zur nächsten Veranstaltung wurde einfach die bisherige erste Zeile gelöscht, womit die nächste Zeile zur extern referenzierten ersten Zeile wurde.

Mfg, Jörn

PS: Ganz allgemein brauchst Du Textfelder, die auch die Grundlage von Serienbriefen sind. Wirklich programmieren muss man da nichts.
LO 6.0.7 (32Bit) Win8.1 Pro 32 Bit/ LO 6.3.2 Win10 64Bit / LO 6.0.7 Win7 Pro 64 Bit

Stefan22
Beiträge: 6
Registriert: Mi 8. Dez 2021, 23:52

Re: Brief automatisiert mit Daten füllen

Beitrag von Stefan22 » Do 9. Dez 2021, 09:56

Jörn,

danke für den Link zu DDE. Wenn ich das richtig sehe, dann kann ich DDE-Felder definieren, die sich aus irgendwelchen DDE-Quellen wie eine Calc-Datei füllen. Ich habe solch eine DDE-Quelle nicht, weil die Daten aus einer Anwendung kommen.
Ich bin auch nicht auf DDE festgelegt, nur hat dieser von mir beschriebene Weg mal mit OOo funktioniert. und funktioniert so ähnlich auch mit Word.

Letztendlich muss ich ins ODT irgendwelche Werte pushen. Serienbriefe kann ich auch erstellen, weil ich da ja einfach eine Textdatei als Datenquelle für Adressen und Anreden zusammenstellen kann. Nur die anderen Werte muss ich direkt ins ODT schreiben. Ich google mir seit Tagen einen Wolf...

Viele Grüße
Stefan

F3K Total
Beiträge: 2410
Registriert: So 10. Apr 2011, 10:10

Re: Brief automatisiert mit Daten füllen

Beitrag von F3K Total » Fr 10. Dez 2021, 16:50

Moin,
Nur die anderen Werte muss ich direkt ins ODT schreiben. Ich google mir seit Tagen einen Wolf...
Tja, und geholfen werden kann Dir hier auch nicht, weil du das wichtigste hinterm Berg hältst:
... weil die Daten aus einer Anwendung kommen.
Was bitte soll denn eine Anwendung sein? Das kann alles sein. Du solltest eine Datei hochladen, die deine Anwendung ausspuckt und erklären, welche der in der Datei enthaltenen Daten, wo, in welches .odt Dokument sollen.
Dann kann dir auch geholfen werden.

Gruß R
Windows 10: AOO, LO Linux Mint: AOO, LO

Stefan22
Beiträge: 6
Registriert: Mi 8. Dez 2021, 23:52

Re: Brief automatisiert mit Daten füllen

Beitrag von Stefan22 » Sa 11. Dez 2021, 02:23

Moin R.

Die Anwendung erzeugt keine Dateien mit Daten, die in ein ODT sollen. Daher gibt es da nichts hochzuladen.

Die Anwendung kann Geschäftsbriefe erzeugen, indem in Vorlagendateien bestimmte Platzhalter ersetzt werden. Das funktioniert mit MS-Word über DDE, und funktionierte auch mit OOo über DDE, über den Weg, den ich im ersten Post beschrieben habe. Nur mit LO funktioniert es offensichtlich nicht mehr. Daher suche ich für LO eine Lösung.

Anders formuliert: ich habe eine ODT, in der es Platzhalter gibt, z.B. <Aktenzeichen>. Diesen Platzhalter möchte die Anwendung durch den Wert 47.11 ersetzen.

Wie kann ich das erreichen?

Gruß Stefan

gogo
Beiträge: 1072
Registriert: Sa 5. Feb 2011, 19:07

Re: Brief automatisiert mit Daten füllen

Beitrag von gogo » Sa 11. Dez 2021, 13:54

Siehe Antwort 1: Serienbrief
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

mikele
Beiträge: 1642
Registriert: Mo 1. Aug 2011, 20:51

Re: Brief automatisiert mit Daten füllen

Beitrag von mikele » Sa 11. Dez 2021, 14:31

Hallo,
von welcher Anwendung sprichst du?
ich soll aus einer Anwendung heraus
Du hast eine odt-Datei in der an bestimmten Stellen Daten eingetragen werden. Soweit ist alles klar und problemlos
Nur: woher kommen die Daten? Das ist die wesentliche Information, die fehlt.
Gruß,
mikele

Wanderer
Beiträge: 895
Registriert: Di 11. Feb 2014, 20:03
Wohnort: Berlin

Re: Brief automatisiert mit Daten füllen

Beitrag von Wanderer » So 12. Dez 2021, 00:38

Stefan22 hat geschrieben:
Sa 11. Dez 2021, 02:23
Moin R.

Die Anwendung erzeugt keine Dateien mit Daten, die in ein ODT sollen. Daher gibt es da nichts hochzuladen.

Die Anwendung kann Geschäftsbriefe erzeugen, indem in Vorlagendateien bestimmte Platzhalter ersetzt werden. Das funktioniert mit MS-Word über DDE, und funktionierte auch mit OOo über DDE, über den Weg, den ich im ersten Post beschrieben habe. Nur mit LO funktioniert es offensichtlich nicht mehr. Daher suche ich für LO eine Lösung.

Anders formuliert: ich habe eine ODT, in der es Platzhalter gibt, z.B. <Aktenzeichen>. Diesen Platzhalter möchte die Anwendung durch den Wert 47.11 ersetzen.

Wie kann ich das erreichen?

Gruß Stefan
Ich habe den Eindruck, dass da einiges durcheinander ist... Zumindestens verstehe ich es nicht.
  • Erstmal: Wenn "die Anwendung" etwas machen soll, musst Du eigentlich im "die Anwendung"-Forum suchen, nicht bei LibreOffice.
  • Bei DDE wird nichts in eine Datei gepusht, sondern das Programm, das eine Datei bearbeitet holt sich die Werte (bzw fragt bei "einer anderen Anwendung" nach Daten )
  • Funktioniert es denn immer noch mit OpenOffice oder Word? Wenn es mit OpenOffice noch geht, kannst Du entweder OO und LO parallel verwenden, oder mal probieren, ob die 32bit-Version von LO Dir weiterhilft. Inter-Prozess-Kommunikation scheitert gerne mal an solchen Grenzen. Und nach Deinen Einlassungen könnte "die Anwendung" ja auch von vorgestern sein...
  • Wenn Deine Push-Darstellung stimmt und "die Anwendung" mit Dateien für Open- oder MS- Office klarkommt und die Werte dort reinschreiben kann, sollte LibreOffice diese Dateien eigentlich danach lesen können...
... und jetzt braucht meine Glaskugel etwas Ruhe.
LO 6.0.7 (32Bit) Win8.1 Pro 32 Bit/ LO 6.3.2 Win10 64Bit / LO 6.0.7 Win7 Pro 64 Bit

F3K Total
Beiträge: 2410
Registriert: So 10. Apr 2011, 10:10

Re: Brief automatisiert mit Daten füllen

Beitrag von F3K Total » So 12. Dez 2021, 09:15

Also,
ich habe es gerade mit AOO 4.1.11und LO 7.2.3 ausprobiert, DDE funktioniert in beiden.
Allerdings muss der Link, siehe Menü Bearbeiten, Verknüpfungen zu externen Dateien auch stimmen!
Wenn man die Quelle verschoben hat funktioniert der Link in der Zieldatei nicht mehr.

Gruß R
Windows 10: AOO, LO Linux Mint: AOO, LO

Stefan22
Beiträge: 6
Registriert: Mi 8. Dez 2021, 23:52

Re: Brief automatisiert mit Daten füllen

Beitrag von Stefan22 » Mo 13. Dez 2021, 13:18

Hallo zusammen, vielen Dank für Eure Antworten!

Bei der Anwendung handelt es sich um ein kommerzielles DMS mit eigener Datenbank. Ganz klassisch in Cplüschplüsch mit VisualStudio programmiert. Wird niemand kennen, weil es fast ausschließlich im kommunalen Bereich eingesetzt wird. Und ich bin ja beim Hersteller. Konkret habe ich das gerade bei einer Stadt eingeführt, die mit LO arbeitet. Mit MS-Office funktioniert die Datenübergabe, mit OOo auch. Früher funktionierte es mit LO auch, muss aber schon einige Jahre her sein.

Das DMS kann u.a. Dokumente (Geschäftsbriefe, Formulare whatever) erstellen, die mit DMS-eigenen Daten oder mit Daten aus kommunalen Fachverfahren "befüllt" und einem Sachbarbeiter zur weiteren Bearbeitung geöffnet werden. Diese Dokumente werden durchaus nach außen weitergegeben, deshalb müssen die Daten im Dokument sein, d.h. ich kann es nicht über Serienbrieffelder füllen.

In meinem ersten Post hatte ich beschrieben,wie bei OO und früher LO die Daten übergeben werden. Es ist tatsächlich so, dass das OO/LO als DDE-Server aufgerufen wird, zumindest würde ich das so interpretieren:

Code: Alles auswählen

DDE_Oeffne("soffice", "system", Dateiname);
Dann werden durch folgenden Aufruf die Platzhalter gefüllt:

Code: Alles auswählen

DDE_FuehreAus(DDEKanal, "[ThisComponent.TextSections.GetByName("Aktenzeichen").Anchor.String="123.45"]")
Die Platzhalter werden also nicht aus irgendwelchen DDE-Quellen gefüllt, sondern über DDE ins Dokument gepusht!

Das dumme ist, dass alle Returncodes auf Erfolg hinweisen. Es gibt auch keine Fehlermeldungen in LO. Und ich weiß nicht, ob man LO irgendwie debuggen kann. Ich finde aber auch in keiner Doku von LO (auch nicht in der von OO) etwas Vernünftiges, ob der Zugriff auf die oben beschriebene Art mal irgendwann rausgenommen wurde. Aus Sicherheitsgründen oder so, könnte ja sein. Ich finde nicht mal die Dokumentationvon diesem Zugriff.

Den Tipp mit der 32-Bit-Variante von LO werde ich auf jeden Fall ausprobieren!

Ansonsten bin ich dankbar für alle Hinweise, wie ich meine Aufgabe gelöst bekomme.

Danke und Grüße
Stefan

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten