Makro

Brugerhjælp og support til tekstbehandling i LibreOffice Writer

Redaktører: Lodahl, Ejnar

Besvar
Normann Louis Olsen
Indlæg: 132
Tilmeldt: 27. okt 2003 22:00
Geografisk sted: Jyllinge

Makro

Indlæg af Normann Louis Olsen » 7. mar 2006 11:08

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

Brugeravatar
Lodahl
Indlæg: 1961
Tilmeldt: 14. sep 2005 08:27
Geografisk sted: Storkøbenhavn
Kontakt:

Re:Makro

Indlæg af Lodahl » 7. mar 2006 13:26

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:

Kode: Vælg alt

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
Indlæg: 132
Tilmeldt: 27. okt 2003 22:00
Geografisk sted: Jyllinge

Re:Makro

Indlæg af Normann Louis Olsen » 7. mar 2006 18:13

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

Brugeravatar
Lodahl
Indlæg: 1961
Tilmeldt: 14. sep 2005 08:27
Geografisk sted: Storkøbenhavn
Kontakt:

Re:Makro

Indlæg af Lodahl » 7. mar 2006 22:25

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':

Kode: Vælg alt

//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
Indlæg: 132
Tilmeldt: 27. okt 2003 22:00
Geografisk sted: Jyllinge

Re:Makro

Indlæg af Normann Louis Olsen » 8. mar 2006 13:52

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

Brugeravatar
Lodahl
Indlæg: 1961
Tilmeldt: 14. sep 2005 08:27
Geografisk sted: Storkøbenhavn
Kontakt:

Re:Makro

Indlæg af Lodahl » 8. mar 2006 14:01

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
Indlæg: 132
Tilmeldt: 27. okt 2003 22:00
Geografisk sted: Jyllinge

Re:Makro

Indlæg af Normann Louis Olsen » 8. mar 2006 20:52

OK den virker: Onsdag den 08. Marts 2006
Med venlig hilsen
Louis

Normann Louis Olsen
Indlæg: 132
Tilmeldt: 27. okt 2003 22:00
Geografisk sted: Jyllinge

Re:Makro

Indlæg af Normann Louis Olsen » 10. mar 2006 20:20

:D Og så er det endda meget besnærende at se lidt nærmere på JavaScript :o
Med venlig hilsen
Louis

Normann Louis Olsen
Indlæg: 132
Tilmeldt: 27. okt 2003 22:00
Geografisk sted: Jyllinge

Re:Makro

Indlæg af Normann Louis Olsen » 11. mar 2006 20:40

:( 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
Indlæg: 132
Tilmeldt: 27. okt 2003 22:00
Geografisk sted: Jyllinge

Re:Makro

Indlæg af Normann Louis Olsen » 11. mar 2006 21:49

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

Besvar

Hvem er online

Brugere der viser dette forum: Ingen og 7 gæster