Seite 1 von 1

Fixes Datum per Makro

Verfasst: So 12. Jul 2015, 19:34
von Mau
Liebe ExpertInnen,

ich laboriere (wieder einmal) daran, per Makro in einem - bzw. zwei - Format(en) das aktuelle Datum als fixen Wert einzufügen.

Dazu habe ich zunächst die zufällig entdeckte Seite http://www.ooowiki.de/FeldbefehlDatumIn ... ormat.html abgearbeitet. Nur wird auf diesem Weg das Datum doch immer aktualisiert, obwohl ich das Gegenteil angegeben habe.

Im Forum "LO Programmierung" auf der Seite
http://www.libreoffice-forum.de/viewtop ... mat#p27336
habe ich diesen Beitrag von karolus gefunden:
karolus hat geschrieben:Hallo

Code: Alles auswählen

sub datum
   sDatum = format (date()+14 ,"DD.MM.YYYY")
        msgbox sDatum
end sub
dim sDatum as date ist Blödsinn, weil format(...) eh einen string zurückgibt
Der Befehl msgbox sagt mir, dass ich jedes Mal eine Eingabe machen, also zwischen mehreren Möglichkeiten wählen soll. Ich möchte aber einen Makro erstellen, bei dem das nicht erforderlich ist, sondern der automatisch an der Cursor-Stelle das Format "TT.MM.JJJJ", und einen, der "T.MMMM.JJJJ" einfügt.
Würde für den ersten die Routine

Code: Alles auswählen

sub datum
   sDatum = format (date(),"DD.MM.YYYY")
end sub
ausreichen?
Ich vermute nicht, denn auf der Seite
http://www.libreoffice-forum.de/posting ... 12&p=14174
habe ich von F3K Total einen sehr viel längeren Code gefunden:
F3K Total hat geschrieben:

Code: Alles auswählen

Sub S_Insert_Date

dim bfound as boolean

bfound = false
opageenum = thiscomponent.drawpage.createEnumeration
while opageenum.hasmoreelements
  oshape = opageenum.nextelement
  if not ismissing(oshape.name) then
    if oshape.name = "Datum" then
      if oshape.supportsservice("com.sun.star.drawing.TextShape") then
        oshape.String = format (date(),"DD.MM.YYYY")
        bfound = true
      endif
    endif
  endif
wend

if not bfound then msgbox ("Ein Textfeld mit dem Namen 'Datum' wurde nicht gefunden.",48,"Fehler")

End Sub
Dies scheint das Datum jedoch in einem Textfeld auszugeben. Das möchte (bzw. benötige) ich auch nicht. Also müsste der Code eigentlich einfacher sein.

Gruß,
Mau

Re: Fixes Datum per Makro

Verfasst: So 12. Jul 2015, 20:51
von mikele
Hallo,

Code: Alles auswählen

sub fixdatum
		
   sDatum = format (date() ,"DD.MM.YYYY")
   odoc=thiscomponent
   oview=odoc.getcurrentcontroller.getviewcursor
   odoc.gettext().insertstring(oview,sdatum,false)

end sub

Re: Fixes Datum per Makro

Verfasst: So 12. Jul 2015, 21:16
von komma4
Das Makro funktioniert nur, wenn der sichtbare Cursor sich im Textteil einer Writer-Datei befindet.

Also nicht, wenn sich der Cursor:
  • in einer Kopf- oder Fusszeile
  • in einem Rahmen
  • oder in einer Tabelle
befindet.

An den Stellen muss man etwas tricksen... siehe Sourcecode meiner Extension DateTime2

Re: Fixes Datum per Makro

Verfasst: So 12. Jul 2015, 22:20
von Mau
Lieber mikele, lieber Winfried,

phantastisch, danke!!

Die von Winfried zusätzlich erfassten Sonderfälle kommen bei mir zu selten vor, als dass sich diese Ergänzung lohnen würde.

Für das Format "31. Dezember 1999" ersetze ich den String "DDMMJJJJ" dann sicherlich nur durch "T. MMMM JJJJ", richtig?

Gruß, und mille grazie,
Mau

Re: Fixes Datum per Makro

Verfasst: So 12. Jul 2015, 22:35
von Mau
Ich hätte wohl richtiger so schreiben müssen:
Mau hat geschrieben: Für das Format "31. Dezember 1999" ersetze ich den String "DDMMYYYY" dann sicherlich nur durch "D. MMMM YYYY", richtig?
Gruß, und mille grazie,
Mau