Warum setzt der Feldbefehl im Makro statt des Datums die Zahl 43103,68 ein?

Hallo,

für die lästige Datumsangabe bei Briefen habe ich ein Mini-Makro mit dem Inhalt + Feldbefehl, "Berlin, den x.Monat, 2xxx geschrieben. Doch wenn ich das dann aufrufe erscheint: Berlin, den 43103,68

Warum ist das so und was kann ich da ändern?
Dank und Gruß, hsc

43103,68 ist nichts anderes als die “gewöhnliche” Darstellung der Zahl, die als Datum-Zeit-Wert formatiert 2018-01-03 16:19:12 ergäbe.

Die einfügbaren Felder ‘Datum’ und ‘Datum (fix)’ erlauben die Wahl des Darstellungsformats. Ein Feldbefehl, der eigentlich Text einfügen soll, den Text aber unter Einbeziehung eines Zahlewerts bilden muss, nimmt eine automatische Konvertierung vor - und die kennt das gewünschte Format nicht.

Das angemessene Mittel, die “lästige Datumsangabe” zu sparen, ist nicht ein “Makro”, sondern eine Briefvorlage.

Also: Deine Briefvorlage sollte "Berlin, " als Text enthalten, und danach des Feld ‘Datum (fix)’ in geeigneter Formatierung. Übrigens ist das eindeutig beste und nach DIN 5008 normgerechte Datumformat “JJJJ‑MM‑TT” (ISO 8601-konform).

“…Feldbefehl im Makro…” verstehe ich vielleich nicht richtig. Falls du in einem BASIC-Makro das Ergebnis der Now() -Funktion als Datum formatieren willst, musst du Formatcodes benutzen. In deinem (von mir nicht affirmierten) Beispiel wäre etwa
einfText = Format(Now(), """Berlin, den ""DD. MMMM. YYYY") zu verwenden. Ich mache das selbst nicht so, und weiß auch nicht ob und wie man die Dokumentsprache bei abweichendem Gebietsschema zur Wirkung bringen kann.

Bearbeitung unter Berücksictigung der nachträglichen Anmerkung des OQ:

Natürlich kann man solche Aktionen auch in LibO mit CustomCode implementieren. Ich empfehle es nicht, aber es ist ganz lustig, sowas hin und wieder zu machen. Diese Demo enthält den Code, den ich fast vollständig bei Andrew Pitonyak abgekupfert habe. Man kann ihn natürlich auch in einen Modul der eigenen Standardbibliothek legen. Das Beispiel enthält zwar englischen Dummytext (weil ich UI und locale auf “English (UK)” eingestellt habe), hat aber die Dokumentsprache “German (Germany)”. Das demonstriert auch, dass das Format (Monatsnamen!) hier dank Andrews Geschicklichkeit der Dokumentsprache folgt.
Kann MS Office das auch?

Man kann eine Antwort durch Anklicken des Hakens als richtig akzeptieren. Der Haken wird dann auch für andere Benutzer, die nach Lösungen suchen, sichtbar.

Danke für die schnelle Antwort. Ich folge Deinem Rat, und bin gespannt, ob das in der Vorlage tatsächlich als Feldbefehl gespeichert ist, oder aber nur das Ergebnis, nämlich das Datum von heute. Morgen weiss ich mehr…

(Ganz so abwegig ist das mit dem Makro nicht. Mit Windows-Word habe ich das 20 jahre lang so gehalten und war sehr praktisch, denn diese Formel Ort, Datum wird ja an unterschiedlichen Stellen gebraucht…)

Die Vorlage speichert das Textfeld. Sobald ein neues Dokument von der Vorlage abgeleitet wird, wird das Textfeld ‘Date (fixed)’ einmal aktualisiert.
(MS ermutigt zum Gebrauch von VBA-Makros, weil sie inkompatibel sind. Ich sehe darin eine der Waffen gegen freie Konkurrenten. Wie sieht dein “Mini-Makro” denn aus? Du kannst deine Frage editieren, um den Code hinzuzufügen.)

NB: Kommentare können mit dem speziellen Werkzeug sowohl zu Fragen, als auch zu Antworten hinzugefügt werden. Was man als Antwort ausweist, sollte auch eine sein… (Askbot-Stil)

Hmm, ganz so einfach ist das leider nicht. Willst Du nicht den Text fix per Makro in den Brief schreiben So wie Lupp das dargestellt hat), sondern tatsächlich den Feldbefehl nutzen und dort nur den Wert eintragen, so musst Du vorher per Makro das passende Nummernformat erzeugen. Das ist nämlich nicht automatisch im Dokument vorhanden - sondern wird erst dort hineinkopiert bzw. erzeugt, wenn Du das einmal per UI genutzt hast. Ansosnten sind nur engliche Standardversionen vorhanden.
Ich habe solche passenden Makros geschrieben - und könnte mal gerne einen Blick auf Dein Makro werfen. Leider ist die Plattform hier recht ungeeignet, in einen Dialog zu treten (jeder Verfasser darf nur eine Antwort posten)…

Bei tieferen Interesse empfehle ich einen Wechsel auf die Plsttform de.openoffice.info - ist ein Forum mit mehr Möglichkeiten. Am besten gleich im Basic-Forum posten - ich finde Dich dann dort schon:)

Viele Grüße
Tom

@Toxitom: Andrew Pitonyak hat vor Jahren eine fertige Lösung für die benötigten Formate veröffentlicht (als Function) und auch Unterprogramme, wie man sie zum Einfügen von Strings oder TextFields braucht.
Die Demo, die ich meiner Antwort angehängt habe, enthält diesen Code in leicht angepasster Form. Der arbeitet auch wirklich.