Excursus su macro di OpenOffice o LibreOffice

La prima parte in rosso contiene indicazioni basilari sulle macro da come registrare una macro a come eseguirla associata a un tasto o a un menu a tendina e infine un codice di “hello world”, la seconda parte in verde contiene informazioni più specifiche su come consultare le api di openoffice per scrivere codice.

Le macro di openoffice sono dei comandi scritti a computer che permettono di fare potenzialmente qualsiasi cosa coi documenti di openoffice.

La prima macro la si può realizzare senza scrivere codice: si clicca su strumenti → macro → registra macro
Si fa qualcosa come ad esempio cambiare il colore di un testo
Si clicca su termina registrazione
Si nomina la macro, scegliendo dove salvarla
La si esegue con strumentimacroEsegui macro → si cerca la macro che si è appena registrata e si clicca su esegui. Il programma rifarà le stesse azioni che si sono registrate (ad esempio l’atto di cliccare sul bottone che cambia il colore di un testo)
Si può guardare il codice corrispondente alla macro andando su strumentimacroOrganizza macro → …office basic → si sceglie la macro e si clicca modifica.

Infine si può agevolare l’uso di una macro associandola a un tasto. Per fare questo:
Strumenti → personalizza → tastiera → si seleziona il tasto o i tasti da associare nella sezione tasti di scelta rapida → nella sezione “Funzioni” “Categoria”, si va in fondo su “Macro di openoffice”, si cerca il modulo dove si è salvata la macro e quindi si clicca sulla macro (nella sezione funzione).
Ci si assicura di nuovo che sia selezionato il tasto che si vuole assegnare e si clicca su cambia.

Prima di associare un tasto è opportuno verificare se quel tasto farebbe già qualcosa di per sé.
In base infatti se si associa una macro a un tasto (o più tasti) non vengono sovrascritte le funzionalità originarie del tasto.
Si ha quindi una situazione instabile dove il tasto fa: o solo la funzione originaria per cui era stato progettato, o sia la funzione originaria che la macro associata, o solo la macro associata.

In openoffice si può anche associare una macro a un menu a tendina:

strumentipersonalizza → scheda menu → sezione menu di openoffice → nuovo → si da il nome → Si va sulla sezione contenuto menuimporta… → in fondo su Macro di openoffice → si sceglie la macro → si clicca su aggiungi → si clicca su OK.

Anche se si possono usare anche altri 1 o 2 linguaggi nella maggior parte dei casi le macro di openoffice sono scritte usando il linguaggio basic o visual basic.

In questo linguaggio le procedure ad esempio si dichiarano con

sub nomeprocedura (a as String, b as integer)
end sub

Le istruzioni if sono:

if a = 0 then

elseif a >0 then

else

end if

I cicli for sono

for i=0 to 10
next

E via così, tutta la sintassi come anche i comandi per manipolare le stringhe e le tipologie base si trovano facilmente in internet cercando ad esempio visual basic manipolare stringhe.

Per fare una macro di esempio:
strumentimacroorganizza macro → …office Basic → si seleziona il posto dove si vuole salvare la macro e si clicca su modifica.

Attenzione: se si salva una macro dentro il file di openoffice e non dentro la sezione “macro personali”, al momento dell’apertura di quel file openoffice disattiverà le macro.
Per poterle usare serivrà modificare le impostazioni di sicurezza:
Strumentiopzionisezione generale openofficesicurezza → sicurezza delle macrosi imposta su medio o su basso

Si va in fondo al testo e si scrive

sub procedurainutile
msgbox(“Ciao”)
end sub

Dopodichè si potrà invocare questa procedura, che apre una finestra con scritto Ciao, coi metodi che si sono detti prima.

Le macro di openoffice vengono invocate singolarmente nel momento in cui sono richieste dall’utente, quindi non mi pare che si possano avere delle variabili che permangono al di fuori della procedura che si invoca, in luogo di queste però esistono ad esempio i comandi nascosti, che sono oggetti che possono essere creati nel formulario.

Gli oggetti e relative funzioni di openoffice sono ideati con l’architettura object oriented.
Ogni oggetto implementa una sequenza di interfacce.
Una certa interfaccia può essere implementata da più oggetti.
Ogni oggetto implementa una data interfaccia a modo suo.
Quindi una funzione di un’interfaccia che restituisce object (che è l’oggetto base su cui si basano tutti gli oggetti: si può dire che tutti gli oggetti di openoffice sono anche degli object) potrà restituire oggetti differenti a seconda dell’oggetto che l’ha implementata.

Infine le macro di openoffice gestiscono i documenti di openoffice tramite degli oggetti detti service: si tratta di oggetti che si relazionano con le funzionalità grafiche e interne di openoffice.
I service sono in grado di manipolare i documenti di openoffice.

Tutte le interfacce con tutte le rispettive funzioni e tutti i service costituiscono le api di openoffice.

Le api di openoffice si trovano elencate alfabeticamente qui.

Siccome nella documentazione vengono indicate le funzioni astratte, così come definite dalle interfacce.
Quando scrivo una macro però voglio sapere esattamente quali oggetti restituisce una funzione e quante funzioni implementa un certo oggetto.

La maggior parte degli oggetti di openoffice implementano il comando dbg_methods, dbg_properties e Dbg_SupportedInterfaces.
Quindi quando si sta scrivendo del codice e per esempio si usa una funzione che le api definiscono astrattamente come

object elementi_presenti(integer)

di cui non so quale sia l’oggetto restituito, quando la invoco da macro:

etichetta = formulario.elementi_presenti(0)

potrò utilizzare:

etichetta.dbg_methods()

Per avere un elenco delle procedure implementate.
La stessa cosa vale quando in generale ho un oggetto di cui non ho informazioni precise.

Annunci

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: