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