Makro med dato skriver tal

Brugerhjælp og support til makroer i LibreOffice Basic

Moderators: Lodahl, LarsBrandi

Post Reply
Kurt L

Makro med dato skriver tal

Post by Kurt L »

Jeg har lavet en lille makro i tekstdokument, som automatisk skal indsætte dato.

Makroen fungerer - men i stedet for dato skriver den et tal fx 32456,98.

:lol: Antal dage fra Jesus fødsel (her ved juletid)? Men jo ikke logisk for bruger.

Kan rette det, når makroen er kørt, og jeg taster F9, men...

Venligst Kurt
finngl
Posts: 239
Joined: 22. Oct 2003 20:33

Re:Makro med dato skriver tal

Post by finngl »

Hej Kurt

Hvordan ser diin makro ud?

Mvh.

Finn
Kurt L

Hvor finder jeg makroen

Post by Kurt L »

Hej Finn
:o Øh, hvor er det lige jeg finder programmerede makro-tekst?

Venligst Kurt
Kurt L

Datofelt makroen

Post by Kurt L »

Jeg har vist fundet makroens programmering, nedenfor:

Resultatet bliver sådan: Den 37982,57

Venligst Kurt

REM ***** BASIC *****

Sub Main

End Sub


sub KL_dato
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Text"
args1(0).Value = "Den "

dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args1())

rem ----------------------------------------------------------------------
dim args2(5) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Type"
args2(0).Value = 0
args2(1).Name = "SubType"
args2(1).Value = 0
args2(2).Name = "Name"
args2(2).Value = ""
args2(3).Name = "Content"
args2(3).Value = "0"
args2(4).Name = "Format"
args2(4).Value = 5076
args2(5).Name = "Separator"
args2(5).Value = " "

dispatcher.executeDispatch(document, ".uno:InsertField", "", 0, args2())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:InsertPara", "", 0, Array())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:InsertPara", "", 0, Array())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:InsertPara", "", 0, Array())

rem ----------------------------------------------------------------------
dim args6(0) as new com.sun.star.beans.PropertyValue
args6(0).Name = "LeftPara"
args6(0).Value = true

dispatcher.executeDispatch(document, ".uno:LeftPara", "", 0, args6())


end sub
finngll

Re:Makro med dato skriver tal

Post by finngll »

Nåeh - du har brugt den der nye funktion, der genererer makroer automatisk. Den har jeg aldrig rigtig fået til at virke. Men at skrive en makro, der indsætter en dato, er ikke så svært. Jeg vil gerne lave et lille eksempel. Jeg går ud fra at datoen bare skal indsættes ved cursoren, eller hvad? Og hvilket format vil du gerne have datoen i?

Mvh.

Finn
Kurt L

Datomakro jatak

Post by Kurt L »

:D Ja tak det vil jeg da gerne have en makro.

Den skulle se sådan ud:

Højrestillet
Arial 10 punkt
Den 12.december 2003
Herunder ny linje, venstrestillet

Så det ud sådan nogenlunde:
(Venstrestillet) Den 28.december 2003
Tak for makroen

...Og hvor skal jeg så lige placere den i systemt, hvis du laver en til mig?

Venligst Kurt
finngl
Posts: 239
Joined: 22. Oct 2003 20:33

Datomakro

Post by finngl »

Uha, det var mange krav. Det var ikke min tanke at lave en fuldt færdig makro - jeg vil bare give dig et lille eksempel, så du kan få en idé om hvordan man laver makroprogrammering i StarOffice/OpenOffice.org (hvis man altså ikke vælger at prøve med makrooptageren, men den har jeg som sagt ikke gode erfaringer med). Jeg tror jeg vil vælge at reducere opgaven til at datoen skal indsættes ved brugerens cursor i formatet dd-mm-åå.

Makroer i StarOffice skrives i StarOffice BASIC. Start makroeditoren ved at vælge (dansk version) Funktioner > Macros > Makro. Indtast et makronavn og klik på 'Ny'. Man kan gemme makroer både i dokumenter og i eksterne biblioteker. Til at begynde med er det nok nemmest at anbringe makroerne i dokumenter.

Når du har fået startet makroeditoren, kan du indtaste denne makro:

Sub dato

Doc = ThisComponent
Cursor = Doc.CurrentController.getViewCursor()
Cursor.String = CStr(date)

End Sub

Første linje gør det aktuelle dokument tilgængeligt som objekt. Anden linje gør brugerens cursor (kaldet viewcursoren) tilgængelig, og tredje linje indsætter den aktuelle dato i viewcursorens position.

Du kan finde mere information om makroprogrammering i StarOffice BASIC på flg. webadresse: http://development.openoffice.org/index.html#BASIC

Håber det kan hjælpe dig lidt på vej :-)

Mvh.

Finn
Guest

Re:Makro med dato skriver tal

Post by Guest »

Jeg har læst dit spørgsmål og har selv på et tidspunkt fedtet lidt med et tilsvarende problem. Du skal bare vælge brugerdefineret format i den formalar du indsætter i. Formateringe styres fra det ark du indsætter i når du kommer med en dato- type.
Venlig hilsen Michael Nilou
Post Reply