Makro

Brugerhjælp og support til tekstbehandling i LibreOffice Writer

Moderators: Lodahl, Ejnar

Post Reply
Normann Louis Olsen
Posts: 144
Joined: 27. Oct 2003 22:00
Location: Jyllinge

Makro

Post by Normann Louis Olsen »

Jeg har skrevet en makro og tildelt den en tastekombination.

Resultatet skulle gerne blive fast dags dato, men i stedet får jeg tallet 38783,46, dvs det tal som repræsenterer dags dato i systemet klokken ca 11, den 7. marts 2006

Hvis jeg bruger makroen i et gammelt dokument, hvor et datoformat allerede er defineret, virker den uden videre.

Kan nogen fortælle mig hvad der er galt?
Med venlig hilsen
Louis
Lodahl
Posts: 1961
Joined: 14. Sep 2005 08:27
Location: Storkøbenhavn
Contact:

Re:Makro

Post by Lodahl »

38783,46 er netop talværdien for 07.03.2006 11:02:24.

Du skal på en eller anden måde formattere informationen som dato/tid. Jeg er ikke helt sikker på hvordan. Kan du ikke klippe-klistre din makro ind her ? Så vil jeg gerne kigge på det.

Du kan gøre det med javaScript:

Code: Select all

importClass(Packages.com.sun.star.uno.UnoRuntime);
importClass(Packages.com.sun.star.text.XTextDocument);
importClass(Packages.com.sun.star.text.XText);
importClass(Packages.com.sun.star.text.XTextRange);

oDoc = XSCRIPTCONTEXT.getDocument();
xTextDoc = UnoRuntime.queryInterface(XTextDocument,oDoc);
xText = xTextDoc.getText();
xTextRange = xText.getEnd();
var xDato=new Date();

xTextRange.setString( xDato );
Men så skal du bagefter lave det om, så det ser ud som du vil have det.
Med venlig hilsen

Leif Lodahl
Blog: https://libreofficedk.blogspot.dk
LibreOffice: http://da.libreoffice.org
Normann Louis Olsen
Posts: 144
Joined: 27. Oct 2003 22:00
Location: Jyllinge

Re:Makro

Post by Normann Louis Olsen »

Sådan ser mine makroer ud.

Men det er stort set volapyk for mig.

Jeg har skrevet dem vha den indbyggede editor.

De resulterer i en dato med format, jævnfør Dansk Standard, på formen 2006-03-07, eller 7. marts 2006, når de aktiveres i et dokument, som desværre skal være "forberedt".

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

Sub Main

End Sub



sub DatoNumerisk
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(5) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Type"
args1(0).Value = 0
args1(1).Name = "SubType"
args1(1).Value = 0
args1(2).Name = "Name"
args1(2).Value = ""
args1(3).Name = "Content"
args1(3).Value = "0"
args1(4).Name = "Format"
args1(4).Value = 5084
args1(5).Name = "Separator"
args1(5).Value = " "

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


end sub



sub DatoLang
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(5) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Type"
args1(0).Value = 0
args1(1).Name = "SubType"
args1(1).Value = 0
args1(2).Name = "Name"
args1(2).Value = ""
args1(3).Name = "Content"
args1(3).Value = "0"
args1(4).Name = "Format"
args1(4).Value = 5076
args1(5).Name = "Separator"
args1(5).Value = " "

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


end sub
Med venlig hilsen
Louis
Lodahl
Posts: 1961
Joined: 14. Sep 2005 08:27
Location: Storkøbenhavn
Contact:

Re:Makro

Post by Lodahl »

Jeg kan heller ikke overskue hvorfor dokumentet ikke kan håndtere feltet ffra starten. Jeg har arbejdet lidt videre med en JavaScript løsning. Du kan selv formatere videre i afsnittet 'Join it all together':

Code: Select all

//JavaScript code from http://javascript.internet.com
//Edited for OpenOffice.org by Leif Lodahl
importClass(Packages.com.sun.star.uno.UnoRuntime);
importClass(Packages.com.sun.star.text.XTextDocument);
importClass(Packages.com.sun.star.text.XText);
importClass(Packages.com.sun.star.text.XTextRange);

oDoc = XSCRIPTCONTEXT.getDocument();
xTextDoc = UnoRuntime.queryInterface(XTextDocument,oDoc);
xText = xTextDoc.getText();
xTextRange = xText.getEnd();

// Get today's current date.
var now = new Date();

// Array list of days.
var days = new Array('Søndag','Mandag','Tirsdag','Onsdag','Torsdag','Fredag','Lørdag');

// Array list of months.
var months = new Array('Januar','Februar','Marts','April','Maj','Juni','Juli','August','September','Oktober','November','December');

// Calculate the number of the current day in the week.
var date = ((now.getDate()<10) ? "0" : "")+ now.getDate();

// Calculate four digit year.
function fourdigits(number)	{
	return (number < 1000) ? number + 1900 : number;
								}

// Join it all together
today =  days[now.getDay()] + " den " +
        date + ". " +
	months[now.getMonth()] + " " +
        (fourdigits(now.getYear())) ;

// Print out the data.
xTextRange.setString( today );
Med venlig hilsen

Leif Lodahl
Blog: https://libreofficedk.blogspot.dk
LibreOffice: http://da.libreoffice.org
Normann Louis Olsen
Posts: 144
Joined: 27. Oct 2003 22:00
Location: Jyllinge

Re:Makro

Post by Normann Louis Olsen »

Det er nogle år siden jeg har forsøgt at programmere, og jeg tror ikke det vil føre vidt, hvis jeg forsøger igen.

Men jeg vil gerne prøve at afvikle din makro, hvis du fortæller mig hvordan jeg får den ind i OO!

Jeg skal lige for den gode ordens skyld illustrere hvordan mine makroer blev til:

Funktioner>Makroer>Optag makro

En dialogboks "Optag m...." dukkede op og så begyndte jeg at klikke:

Indsæt>Felter>Andre>Dokument>Dato>Dato(fast)>1999-12-31>luk

Makrooptagelsen blev stoppet ved at klikke på Stop optagelse i dialogboksen.

Derpå har jeg knyttet makroen til en tastekombination, jævnfør hjælpeteksten For at tildele scripts til en tastekombination, både i OpenOffice.org og i Writer.
Med venlig hilsen
Louis
Lodahl
Posts: 1961
Joined: 14. Sep 2005 08:27
Location: Storkøbenhavn
Contact:

Re:Makro

Post by Lodahl »

Funktioner > Makroer > Administrer makroer > JavaScript
Vælg placering
Tryk Opret
Skriv et Librarynavn
Tryk Opret
Skriv et makronavn
Tryk rediger
(Nu åbnes Rhino javaScript Debugger)
Erstat koden med mit script (copy-paste)
File > Save

Tildel en tastaturgenvej som sædvanligt.
Afprøv !
Med venlig hilsen

Leif Lodahl
Blog: https://libreofficedk.blogspot.dk
LibreOffice: http://da.libreoffice.org
Normann Louis Olsen
Posts: 144
Joined: 27. Oct 2003 22:00
Location: Jyllinge

Re:Makro

Post by Normann Louis Olsen »

OK den virker: Onsdag den 08. Marts 2006
Med venlig hilsen
Louis
Normann Louis Olsen
Posts: 144
Joined: 27. Oct 2003 22:00
Location: Jyllinge

Re:Makro

Post by Normann Louis Olsen »

:D Og så er det endda meget besnærende at se lidt nærmere på JavaScript :o
Med venlig hilsen
Louis
Normann Louis Olsen
Posts: 144
Joined: 27. Oct 2003 22:00
Location: Jyllinge

Re:Makro

Post by Normann Louis Olsen »

:( Line 30:missing;before statement

Jeg har med held modificeret javascriptet ad flere gange, men så fik jeg ovenstående fejlmeddelelse.

Jeg tror det betyder, at der mangler et semikolon foran udsagnet/meddelelsen, men jeg synes ikke jeg har ændret noget dér.

Hvad er mon meningen?
Med venlig hilsen
Louis
Normann Louis Olsen
Posts: 144
Joined: 27. Oct 2003 22:00
Location: Jyllinge

Re:Makro

Post by Normann Louis Olsen »

:shock: glem mit sidste indlæg, tak
Med venlig hilsen
Louis
Post Reply