Hoja de cálculo en la enseñanza de las ciencias

Hoja de cálculo en la enseñanza de las ciencias

Sesión 9: Complementos

Códigos de macros

Este tema no es fácil. Si al comenzarlo ves que no te interesa o que supera tus objetivos, pasa a otras cuestiones.

Abre de nuevo el modelo ecuacion1.ods. Sigue la ruta ya explicada para localizar sus macros: Herramientas > Macros > Organizar macros > OpenOffice.org Basic. Al llegar aquí, busca ecuación1.ods, expande todas sus subcarpetas y selecciona module1. Descubrirás que contiene una macro que se llama Aceptar_ecuacion. Pulsa finalmente el botón Editar.

Podrás leer este código:

Sub Aceptar_ecuacion
dim doc as object
dim hoja as object
dim celda as object
Dim ecuacion As String

ecuacion = InputBox ("Escribe la ecuación:","Entrada de datos")
doc=StarDesktop.CurrentComponent
hoja=doc.sheets(0)
celda=hoja.GetCellByPosition(5,7)
celda.formula="="+ecuacion
celda=hoja.GetCellByPosition(5,8)
celda.formula="="+ecuacion

End Sub


No te dejes intimidar. Es más fácil entenderlo de lo que parece a simple vista. Veamos qué significa cada línea:

Inicio y final de una macro (o procedimiento)

Sub Aceptar_ecuacion
......
......

End Sub

Si quieres escribir tus macros, deberás comenzar por estas dos sentencias: Una primera, compuesta por la palabra Sub y el nombre que le quieras asignar, y una última, que siempre será End Sub. Entre las dos frases deberás escribir el código de tu macro, que es el conjunto de instrucciones que obedecerá.

Declaración de variables

Esta parte es compleja, por lo que en principio deberás copiar literalmente los ejemplos. Aquí hay cuatro declaraciones:

dim doc as object
dim hoja as object
dim celda as object
Dim ecuacion As String
 
Doc es el documento en el que estamos trabajando (ecuacion1.ods), hoja la hoja de cálculo actual, celda, la celda a la que irá la ecuación, y ecuacion, el contenido de esta última.

Como aquí no vamos a enseñarte a programar, si te quieres construir una macro, basta que copies literalmente este tipo de instrucciones.

Instrucciones o sentencias

Lo que sigue en el código son ya las órdenes concretas:

ecuacion = InputBox ("Escribe la ecuación:","Entrada de datos")

Esta orden obliga al programa a abrir una ventana de admisión de datos, con los mismos textos que están entre paréntesis, y lo que tú escribas lo almacenará en la variable ecuacion, que ya estaba declarada.

Cada vez que desees admitir datos deberás usar una sentencia de tipo InputBox.

doc=StarDesktop.CurrentComponent
hoja=doc.sheets(0)
 

Estas dos sentencias indican, en primer lugar, que el documento con el que trabajamos es el que está abierto, y la segunda indica que estamos en la primera hoja (se cuenta a partir del 0). Si estudias otras macros, verás que estas dos sentencias son prácticamente imprescindibles.

celda=hoja.GetCellByPosition(5,7)
celda.formula="="+ecuacion
celda=hoja.GetCellByPosition(5,8)
celda.formula="="+ecuacion

En estas instrucciones se indica que la ecuación que has escrito debe ir, como fórmula (por eso se les añade un signo "=") a la celda de posición (5,7) y a la celda de posición (5,8). Hay que advertir que las filas y columnas se cuentan desde cero, en primer lugar la columna y en segundo la fila, por tanto:

hoja.GetCellByPosition(5,7) equivale a la celda F8
hoja.GetCellByPosition(5,8) equivale a la celda F9

Recorre ahora de nuevo todo el código, y seguro que le encuentras un sentido, aunque no lo hayas comprendido del todo.

¿Te quedan ánimos para seguir?

Repasa el código de macros del modelo correctalg.ods, que lo hemos copiado aquí con comentarios en rojo y es muy probable que lo entiendas todo a la primera:

Sub Aceptar_expresion1   macro para aceptar la primera expresión

dim doc as object     
Declara las variables documento, hoja y celda
dim hoja as object
dim celda as object

Dim expre As String  Declara la variable expre, que recogerá la primera expresión

expre = InputBox ("Escribe la primera expresión:","Entrada de datos")  Admite la primera expresión y la guarda en expre


doc=StarDesktop.CurrentComponent  Concreta que estamos trabajando en la primera hoja del documento
hoja=doc.sheets(0)

celda=hoja.GetCellByPosition(3,11)  Guarda la expresión 1, como fórmula en la celda D12
celda.formula="="+expre

celda=hoja.GetCellByPosition(6,11)   Guarda la expresión 1, como texto (string) en la celda G12
celda.string=expre

End Sub  Fin de macro

Sub Aceptar_expresion2 
macro para aceptar la segunda expresión

dim doc as object 
Declara las variables documento, hoja y celda
dim hoja as object
dim celda as object

Dim expre As String  Declara la variable expre, que recogerá la segunda expresión


expre = InputBox ("Escribe la primera expresión:","Entrada de datos")  Admite la segunda expresión y la guarda en expre


doc=StarDesktop.CurrentComponent  Concreta que estamos trabajando en la primera hoja del documento
hoja=doc.sheets(0)

celda=hoja.GetCellByPosition(3,15)  Guarda la expresión 2, como fórmula en la celda D16
celda.formula="="+expre

celda=hoja.GetCellByPosition(6,15)  Guarda la expresión 2, como texto (string) en la celda G16
celda.string=expre

End Sub