divendres, 20 d’agost del 2010

Macros OOoBasic com funcions de Calc.

OpenOffice.org Calc aporta una llarga llista de funcions incorporades.

Aquesta llista, amb els noms de les funcions en anglès, la podem obtenir aquí:
http://wiki.services.openoffice.org/wiki/Documentation/How_Tos/Calc:_Functions_listed_by_category

 En alguna ocasió ens interessarà poder fer servir alguna d'aquestes funcions dins del codi d'una macro. Igualment es pot donar el cas que ens interessi invocar una macro com si fos una funció icroporada del calc.

Comencem per això últim. Invocar una macro com si fos una funció de Calc.

Per a poder invocar una macro com si fos una funció de Calc és necessari, primer de tot, que la macro estigui carregada. Per defecte es carreguen les macros que estan a la biblioteca "Standard".

Si la macro que vull invocar es troba a un mòdul de la llibreria Standard (ja sigui del Document, o de l'usuari a "Les-meves-macros") aleshores es pot invocar directament.

A les macros del document, a la llibreria Standar, creo un  mòdul nou Module1 i hi poso el següent codi:

Function HelloWorld()
    HelloWorld = "macro invocada com una funció"
End Function

Aleshores, a qualsevol cel·la de la fulla de càlcul hi escric

=helloworld()

en  invocar les funcions no és distingeix majúscules i minúscules

apareixerà immediatament

 macro invocada com una funció

No té gaire ciència. La clau és que la macro es trobi a la llibreria "Standard".

Per a que quedi clar aquest punt, quan fem Eines-Macros-Organitza les macros-OpenOffice.org Basic obtenim això:



Veiem a la imatge com hi ha dues biblioteques Standard: una a "Les meves macros" i l'altre al document, que en aquest cas s'anomena "macro-funció-calc.ods".

En tot moment puc crear noves biblioteques de macros (libraries) fent click al botó "Organitzador...":


Des de la pestanya Biblioteques:


En la que puc triar on vull posar la biblioteca: De l'usuari, general, o del document:


En aquest document de la wiki de l'OpenOffice.org  proposen la següent tècnica per al cas que en que tinguem moltes macros i molt de codi  a les  macros. En aquesta situació, en comptes de sobrecarregar la biblioteca estàndard amb molts mòduls molt grossos, el que proposen es crear biblioteques auxiliars, aleshores, en la biblioteca Standard el que posaríem serien funcions de pont que l'únic que farien seria carregar la llibreria corresponent i invocar a la funció d'utilitat desitjada.   

Cap comentari:

Publica un comentari a l'entrada