🙏 Bitte helfen Sie uns das LibreOffice Forum zu erhalten. 🙏
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🍀 Wir hoffen auf Ihre Unterstützung - vielen Dank!🍀
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
Datums-Berechnung mitten im Text ausgeben / Monatsende
-
- Beiträge: 4
- Registriert: Do 27. Feb 2020, 08:50
Datums-Berechnung mitten im Text ausgeben / Monatsende
Hallo LibreOffice-Gemeinschaft,
ich versuche möglichst einfach ein paar Datums-Berechnungen durchzuführen und das Ergebnis dann mitten im Text auszugeben, komme aber einfach auf keine Lösung.
Beispiel für ein (fiktives) Angebot:
Benutzer gibt in ein Benutzerfeld ein Datum ein: 16.03.2020
Auf der nächsten Seite kommt ein Paragraph:
Dieses Angebot ist bis zum 30.04.2020 gültig.
Die obige Zeile wäre trivial in Calc mit =MONATSENDE(A1; 1) bzw =MONATSENDE("16.03.2020"; 1) zu lösen.
Aber wie um Himmels willen bekomme ich diese Berechnung in Writer hin? Wenn ich eine Tabelle einfüge, dann scheint DATUM/MONATSENDE nicht verfügbar zu sein, bzw es kommt Fehlerhafter Ausdruck.
Muss das mit einem Makro gemacht werden? Das klingt irgendwie nach overkill.
Hoffe jemand hat da eine Idee.
ich versuche möglichst einfach ein paar Datums-Berechnungen durchzuführen und das Ergebnis dann mitten im Text auszugeben, komme aber einfach auf keine Lösung.
Beispiel für ein (fiktives) Angebot:
Benutzer gibt in ein Benutzerfeld ein Datum ein: 16.03.2020
Auf der nächsten Seite kommt ein Paragraph:
Dieses Angebot ist bis zum 30.04.2020 gültig.
Die obige Zeile wäre trivial in Calc mit =MONATSENDE(A1; 1) bzw =MONATSENDE("16.03.2020"; 1) zu lösen.
Aber wie um Himmels willen bekomme ich diese Berechnung in Writer hin? Wenn ich eine Tabelle einfüge, dann scheint DATUM/MONATSENDE nicht verfügbar zu sein, bzw es kommt Fehlerhafter Ausdruck.
Muss das mit einem Makro gemacht werden? Das klingt irgendwie nach overkill.
Hoffe jemand hat da eine Idee.
Re: Datums-Berechnung mitten im Text ausgeben / Monatsende
Hallo,
bei derartigen Texten brauchst Du ja auch den größeren Teil von Writer nicht. Ich erstelle solche Kalkulationen direkt in Calc.
Für den Text kann man Zellen verbinden, den automatischen Umbruch in Zellen aktivieren und auch mit Formaten arbeiten.
Und die typischen Adressfelder im Kopf sind auch kein Problem, da die Zellen millimetergenau angelegt werden können.
Meine Empfehlung wäre also, wenn Du Calc brauchst, dann nutze es auch und versuche nicht das innerhalb von Writer zu lösen.
Mfg, Jörn
bei derartigen Texten brauchst Du ja auch den größeren Teil von Writer nicht. Ich erstelle solche Kalkulationen direkt in Calc.
Für den Text kann man Zellen verbinden, den automatischen Umbruch in Zellen aktivieren und auch mit Formaten arbeiten.
Und die typischen Adressfelder im Kopf sind auch kein Problem, da die Zellen millimetergenau angelegt werden können.
Meine Empfehlung wäre also, wenn Du Calc brauchst, dann nutze es auch und versuche nicht das innerhalb von Writer zu lösen.
Mfg, Jörn
LO 6.0.7 (32Bit) Win8.1 Pro 32 Bit/ LO 6.3.2 Win10 64Bit / LO 6.0.7 Win7 Pro 64 Bit
-
- Beiträge: 4
- Registriert: Do 27. Feb 2020, 08:50
Re: Datums-Berechnung mitten im Text ausgeben / Monatsende
Hallo,
das wäre jetzt eine krasse Umstellung in meiner Firma. Wir haben dutzende Writer-Vorlagen für Geschäftskorrespondenz (Rechnungen, Angebote, Anfragen, Pflichtenhefte, Dokumentation, etc). Und die Vorlagen sind teils sehr ausgefeilt inklusive individuellen Formatvorlagen sowie Kopf- und Fußzeilen, Benutzerfeldern, usw.
Einige Vorlagen möchten wir nun um kleine Passagen mit Datumsberechnungen erweitern. Ich kann mir nicht vorstellen, dass die einzige Antwort darauf ist, alles in Calc zu erstellen.
das wäre jetzt eine krasse Umstellung in meiner Firma. Wir haben dutzende Writer-Vorlagen für Geschäftskorrespondenz (Rechnungen, Angebote, Anfragen, Pflichtenhefte, Dokumentation, etc). Und die Vorlagen sind teils sehr ausgefeilt inklusive individuellen Formatvorlagen sowie Kopf- und Fußzeilen, Benutzerfeldern, usw.
Einige Vorlagen möchten wir nun um kleine Passagen mit Datumsberechnungen erweitern. Ich kann mir nicht vorstellen, dass die einzige Antwort darauf ist, alles in Calc zu erstellen.
Wanderer hat geschrieben: ↑Fr 28. Feb 2020, 08:23Hallo,
bei derartigen Texten brauchst Du ja auch den größeren Teil von Writer nicht. Ich erstelle solche Kalkulationen direkt in Calc.
Für den Text kann man Zellen verbinden, den automatischen Umbruch in Zellen aktivieren und auch mit Formaten arbeiten.
Und die typischen Adressfelder im Kopf sind auch kein Problem, da die Zellen millimetergenau angelegt werden können.
Meine Empfehlung wäre also, wenn Du Calc brauchst, dann nutze es auch und versuche nicht das innerhalb von Writer zu lösen.
Mfg, Jörn
Re: Datums-Berechnung mitten im Text ausgeben / Monatsende
Hallo,
Dazu wird ein UnoService geladen, welcher die Calc-Funktionen bereit stellt. Nach der Berechnung im Makro
erfolgt die Ausgabe in Writer (Tabellenzelle, Feld, an definerter Position im Text.)
Nun hört sich dies sehr einfach an, aber die Calc-Funktion "Monatsende",
bzw. "EOMonth" ist eigentlich keine Funktion, sondern ein AddIn.
Ich habe dies gerade mal bei mir getestet, erhalte aber beim Aufruf per FunctionAccess eine Fehlermeldung.
Ggf. ist hier noch ein spezieller "AddIn Service" erforderlich. Habe diesen in der API noch nicht gefunden.
Heißt also, versprechen kann ich nichts
Nachtrag:
Habe ein Beispielmakro geschrieben.
Das Startdatum (Variable= sDat) kann im Makro geändert werden.
Es handelt sich hierbei wie zuvor erwähnt um ein Calc-AddIn,
welches per Makro geladen wird und das Ergebnis in einer Messagebox ausgibt.
Das ist korrekt. Writer ist halt keine Tabellenkalkulation und bietet nur rudimentäre Berechnungsmöglichkeiten.Wenn ich eine Tabelle einfüge, dann scheint DATUM/MONATSENDE nicht verfügbar zu sein, bzw es kommt Fehlerhafter Ausdruck.
Das ist kein Overkill, sondern es ist eine Möglichkeit Writer mit Calc-Funktionen auszustatten.Muss das mit einem Makro gemacht werden? Das klingt irgendwie nach overkill.
Dazu wird ein UnoService geladen, welcher die Calc-Funktionen bereit stellt. Nach der Berechnung im Makro
erfolgt die Ausgabe in Writer (Tabellenzelle, Feld, an definerter Position im Text.)
Nun hört sich dies sehr einfach an, aber die Calc-Funktion "Monatsende",
bzw. "EOMonth" ist eigentlich keine Funktion, sondern ein AddIn.
Ich habe dies gerade mal bei mir getestet, erhalte aber beim Aufruf per FunctionAccess eine Fehlermeldung.
Ggf. ist hier noch ein spezieller "AddIn Service" erforderlich. Habe diesen in der API noch nicht gefunden.
Heißt also, versprechen kann ich nichts

Beispiel für ein (fiktives) Angebot:
Benutzer gibt in ein Benutzerfeld ein Datum ein: 16.03.2020
- Ist es wirklich ein Feld, vom Typ "Benutzerfeld"?
Menü Einfügen --> Feldbefehl --> Weitere Feldbefehle...
• Wenn ja, welcher Name wurde für das Benutzerfeld vergeben? - Wo soll die Ausgabe (Monatsende) erfolgen?
In ein anderes Feld, in eine Tabelle, etc... - Was ist wenn Benutzerfeld Datum= Monatsende ist?
Nachtrag:
Habe ein Beispielmakro geschrieben.
Das Startdatum (Variable= sDat) kann im Makro geändert werden.
Es handelt sich hierbei wie zuvor erwähnt um ein Calc-AddIn,
welches per Makro geladen wird und das Ergebnis in einer Messagebox ausgibt.
Code: Alles auswählen
REM ***** BASIC *****
Sub MonEnde
Dim sDat as String
' Startdatum einlesen
sDat="10.03.2020"
' Calc-Funktionen laden
fca = createunoservice("com.sun.star.sheet.FunctionAccess")
' Zugriff auf Calc-AddIn "Datumsfunktionen"
' Mittels "getDaysInMonth" und der Variablen "sDat" Gesamttage des Monats ermitteln
' Schaltjahre werden berücksichtigt.
MonEnd = fca.callFunction("com.sun.star.sheet.addin.DateFunctions.getDaysInMonth", array(sDat))
' Datum Monatsletzter zusammensetzen
sDatEnd=DateSerial(Year(sDat), Month(sDat), MonEnd)
' Wert in Messagebox ausgeben
msgbox "Anzahl Tage für den Monat " & Month(sDat) & " = " & MonEnd & Chr(10) & Chr(10) &_
"Monatsende = " & sDatEnd, 64, "Ergebnis des AddIns 'DateFunctions.getDaysInMonth'"
End Sub
Gruß
Craig
Nie die Sicherungskopie vergessen!
════════════════════════════════════════════════
WIN 10 Pro 64-Bit • LO 7.4.5.1 (x64) • AOO 4.1.8
Craig
Nie die Sicherungskopie vergessen!
════════════════════════════════════════════════
WIN 10 Pro 64-Bit • LO 7.4.5.1 (x64) • AOO 4.1.8
-
- Beiträge: 4
- Registriert: Do 27. Feb 2020, 08:50
Re: Datums-Berechnung mitten im Text ausgeben / Monatsende
Hallo Craig,
um Himmels Willen, vielen Dank für deinen Input! Durch dein Makro konnte ich nachvollziehen, wie ich an diese AddIn-Funktionen rankomme. Du bekommst noch eine PN von mir
Für alle Interessierten ein Beispiel-Makro:
Siehe auch :
Im Dokument wurden zwei Benutzerfelder definiert: QuoteDate und QuoteEndDate
Gibt der User für QuoteDate einen Datum ein (z.B. 16.01.2020) und speichert das Dokument, so wird (rein fiktiv) das letzte Datum des nächsten Monats (29.02.2020 - Schaltjahre wurden erkannt) berechnet und im Text aktualisiert.
um Himmels Willen, vielen Dank für deinen Input! Durch dein Makro konnte ich nachvollziehen, wie ich an diese AddIn-Funktionen rankomme. Du bekommst noch eine PN von mir

Nach ein bisschen experimentieren konnte ich auch direkt die Funktion EOMonth aufrufen.Habe ein Beispielmakro geschrieben.
Das Startdatum (Variable= sDat) kann im Makro geändert werden.
Es handelt sich hierbei wie zuvor erwähnt um ein Calc-AddIn,
welches per Makro geladen wird und das Ergebnis in einer Messagebox ausgibt.
Für alle Interessierten ein Beispiel-Makro:
Siehe auch :
Im Dokument wurden zwei Benutzerfelder definiert: QuoteDate und QuoteEndDate
Gibt der User für QuoteDate einen Datum ein (z.B. 16.01.2020) und speichert das Dokument, so wird (rein fiktiv) das letzte Datum des nächsten Monats (29.02.2020 - Schaltjahre wurden erkannt) berechnet und im Text aktualisiert.
Code: Alles auswählen
REM ***** BASIC *****
Function CalculateEndOfMonth(ByVal date As String, ByVal months as Integer) As Long
mArgs = Array(date, months)
fca = createunoservice("com.sun.star.sheet.FunctionAccess")
lResult = fca.callFunction("com.sun.star.sheet.addin.Analysis.getEomonth", mArgs())
CalculateEndOfMonth = lResult
End Function
Sub UpdateFields
oDoc = thisComponent
sFieldDateName = "com.sun.star.text.FieldMaster.User.QuoteDate"
sFieldDate = oDoc.TextFieldMasters.getByName(sFieldDateName).content
lEndDate = CalculateEndOfMonth(sFieldDate, 1)
sFieldEndDateName = "com.sun.star.text.FieldMaster.User.QuoteEndDate"
oDoc.TextFieldMasters.getByName(sFieldEndDateName).content = lEndDate
End Sub
Re: Datums-Berechnung mitten im Text ausgeben / Monatsende
Hallo,
es gäbe da auch noch die Variante mit Formularelementen zu arbeiten. Anbei mal eine Variante mit einem Datumsfeld und einem Beschriftungsfeld.
Sobald das Datumsfeld verlassen wird, wird das Beschriftungsfeld aktualisiert.
es gäbe da auch noch die Variante mit Formularelementen zu arbeiten. Anbei mal eine Variante mit einem Datumsfeld und einem Beschriftungsfeld.
Sobald das Datumsfeld verlassen wird, wird das Beschriftungsfeld aktualisiert.
Code: Alles auswählen
Sub updatedatum
Dim sdatum as string
oDoc = ThisComponent
oform=odoc.getDrawPage().Forms().getByIndex(0)
octrl=oform.getByName("Datumsfeld 1")
sdatum=cdate(dateadd("m",1,dateserial(octrl.Date.year,octrl.Date.month,1))-1)
oform.getByName("Beschriftungsfeld 1").label=sdatum
End sub
- Dateianhänge
-
- date_example2.odt
- (14.34 KiB) 150-mal heruntergeladen
Gruß,
mikele
mikele
An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:
Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.