Datum in Vollform am rechten Rand eintragen (Writer)
Verfasst: Mo, 26.03.2012 17:30
Ich möchte Für Writer-Dokumente (OpenOffice.org 3.2.0) einen Makro produzieren, der nacheinander
Bislang ist als Standard die Kurzform TT.MM.YY eingestellt. Ich finde zunächst einmal keinen Weg, diesen Standard zu ändern. Ich muss also bislang für Schritt 4 immer [Strg]+[F2] drücken, den Feldtyp "Datum" und das Format "31.12.1999" markieren und dann auf "Einfügen" und "Schließen" klicken.
Aber selbst wenn ich den Standard ändern könnte, hätte ich nicht viel gewonnen.
Eine Aufzeichnung bringt nichts:
Schritt 4 funktioniert als Makro in einem Dokument erst dann, wenn vorher wenigstens einmal die im vorigen Absatz beschriebene Prozedur durchlaufen wurde. Der bei der Aufzeichnung eingestellte Rechts-Tabstopp wird ignoriert.
Öffnet man ein neues Dokument, erscheint statt des Datums ein 5-stelliger Zahlen-Code mit zwei nachfolgenden Dezimalstellen (z.B. jetzt gerade 40994,71) offensichtlich bis zum Komma das aktuelle Datum, danach die aktuelle Uhrzeit).
Ich habe früher für WordPerfect zahlreiche Makros geschrieben; WP hat(te) eine riesige und sehr komfortable Makrosprache. Aber BASIC funktioniert leider ziemlich anders. Außer ein paar Tastaturkürzel, etwa für fremdsprachige Sonderzeichen, habe ich noch nicht viel zustande bringen können.
Die Routine ist im MAIN-Makro abgespeichert und heißt "DatumVoll". Hier der Code (ich setze vorsichtshalber Zeilenzahlen):
=======================================================================================
01 sub DatumVoll
02 rem ------
03 rem define variables
04 dim document as object
05 dim dispatcher as object
06 rem ------
07 rem get access to the document
08 document = ThisComponent.CurrentController.Frame
09 dispatcher = createUnoService ("com.sun.star.frame.DispatchHelper")
10 rem ------
11 rem dispatcher.executeDispatch(document, ".uno:Tabstops", "", 0, Array())
12 rem ------
13 dim args2(0) as new com.sun.star.beans.PropertyValue
14 args2(0).Name = "Text"
15 args2(0).Value = CHR$(9)
16 dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args2())
17 rem ------
18 dim args3(5) as new com.sun.star.beans.PropertyValue
19 args3(0).Name = "Type"
20 args3(0).Value = 0
21 args3(1).Name = "SubType"
22 args3(1).Value = 0
23 args3(2).Name = "Name"
24 args3(2).Value = ""
25 args3(3).Name = "Content"
26 args3(3).Value = "0"
27 args3(4).Name = "Format"
28 args3(4).Value = 5036
29 args3(5).Name = "Separator"
30 args3(5).Value = " "
31 dispatcher.executeDispatch(document, ".uno:InsertField", "", 0, args3())
32 end sub
==========================================================================================
Was macht der Makro da im Einzelnen? Und wie kann ich dafür sorgen, dass er das tut, was ich möchte?
Gruß,
Mau
- den Wert für den Rand rechts ermittelt,
- dort einen Rechts-Tabstopp setzt,
- einen Tab zu diesem Tabstopp schaltet und
- das Datum in der Vollform TT.MM.YYYY einträgt.
Bislang ist als Standard die Kurzform TT.MM.YY eingestellt. Ich finde zunächst einmal keinen Weg, diesen Standard zu ändern. Ich muss also bislang für Schritt 4 immer [Strg]+[F2] drücken, den Feldtyp "Datum" und das Format "31.12.1999" markieren und dann auf "Einfügen" und "Schließen" klicken.
Aber selbst wenn ich den Standard ändern könnte, hätte ich nicht viel gewonnen.
Eine Aufzeichnung bringt nichts:
Schritt 4 funktioniert als Makro in einem Dokument erst dann, wenn vorher wenigstens einmal die im vorigen Absatz beschriebene Prozedur durchlaufen wurde. Der bei der Aufzeichnung eingestellte Rechts-Tabstopp wird ignoriert.
Öffnet man ein neues Dokument, erscheint statt des Datums ein 5-stelliger Zahlen-Code mit zwei nachfolgenden Dezimalstellen (z.B. jetzt gerade 40994,71) offensichtlich bis zum Komma das aktuelle Datum, danach die aktuelle Uhrzeit).
Ich habe früher für WordPerfect zahlreiche Makros geschrieben; WP hat(te) eine riesige und sehr komfortable Makrosprache. Aber BASIC funktioniert leider ziemlich anders. Außer ein paar Tastaturkürzel, etwa für fremdsprachige Sonderzeichen, habe ich noch nicht viel zustande bringen können.
Die Routine ist im MAIN-Makro abgespeichert und heißt "DatumVoll". Hier der Code (ich setze vorsichtshalber Zeilenzahlen):
=======================================================================================
01 sub DatumVoll
02 rem ------
03 rem define variables
04 dim document as object
05 dim dispatcher as object
06 rem ------
07 rem get access to the document
08 document = ThisComponent.CurrentController.Frame
09 dispatcher = createUnoService ("com.sun.star.frame.DispatchHelper")
10 rem ------
11 rem dispatcher.executeDispatch(document, ".uno:Tabstops", "", 0, Array())
12 rem ------
13 dim args2(0) as new com.sun.star.beans.PropertyValue
14 args2(0).Name = "Text"
15 args2(0).Value = CHR$(9)
16 dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args2())
17 rem ------
18 dim args3(5) as new com.sun.star.beans.PropertyValue
19 args3(0).Name = "Type"
20 args3(0).Value = 0
21 args3(1).Name = "SubType"
22 args3(1).Value = 0
23 args3(2).Name = "Name"
24 args3(2).Value = ""
25 args3(3).Name = "Content"
26 args3(3).Value = "0"
27 args3(4).Name = "Format"
28 args3(4).Value = 5036
29 args3(5).Name = "Separator"
30 args3(5).Value = " "
31 dispatcher.executeDispatch(document, ".uno:InsertField", "", 0, args3())
32 end sub
==========================================================================================
Was macht der Makro da im Einzelnen? Und wie kann ich dafür sorgen, dass er das tut, was ich möchte?
Gruß,
Mau