Está en la página 1de 15

OpenOffice Calc Inicio Writer Calc Impress Base Draw Math Extensiones Basic

Apache OpenOffice Calc en español Libro de visitas Manual de Calc Bienvenid@s !!!

Como crear tus propias funciones para Calc usando macros buscar en open-office.es
Crear tus propias funciones para Calc usando macros es
realmente sencillo.
Patrocinados por:
 

Veamos un sencillo ejemplo como muestra: necesitamos una


función que calcule la raiz (cuadrada, triple, cuarta...) de
un valor. Por supuesto que se puede realizar con una sencilla
fórmula (por ejemplo, calcular en la celda B3 la raiz cuarta del valor contenido en la celda A3
es tan sencillo como escribir en B3 la fórmula =A3^(1/4)), pero en este post sólo pretendemos
ilustrar cómo crear una función; la complejidad de ésta depende de las necesidades del usuario.

Crear la función
Paso 1: Activar el editor de macros
Abre un nuevo documento Calc, y guárdalo con un nombre, por ejemplo Mi_Función.ods. Activar
el editor de macros desde el menú Herramientas > Macros > Organizar macros >
OpenOffice.org Basic....

Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
OOo mostrará el diálogo Macros básicas de
OpenOffice ES
OpenOffice.org; haz clic sobre el signo + que 2,461 likes
se muestra delante del nombre de tu archivo
(en nuestro ejemplo, Mi_Funicón.ods), y
selecciona la carpeta Standard; a Like Page Share
continuación, haz clic sobre el botón Nuevo.
OOo creará un nuevo módulo dentro de tu Be the first of your friends to like this
documento, y solicitará la confirmación del
nombre de éste; dado que para nosotros es
intrascendente, aceptaremos sin más.

 
OpenO ce ES
 
Seguir

 
Seguir a @open_office_es 548 seguidores
Paso 2: Escribir la función en el editor de macros
La función que vamos a crear es sencilla; la llamaremos RaizX (sin acento), y precisará que le
Identi.ca LinkedIn
indiquemos el número y qué raiz deseamos que calcule; al primer valor lo llamaremos Numero,
sin acento, y al segundo, Raiz, tambien sin acento.

En el editor Basic teclearemos el siguiente código justo debajo de la instrucción Sub Main / End
Enlaces
Sub:
Inglés para los más pequeños de la
Function RaizX( Numero, Raiz ) casa

Ten en cuenta que escribimos sin utilizar acentos, y que ponemos Function, en inglés, no Botón Me gusta de Facebook paso
Funcion, en castellano. Además, a diferencia de las funciones que utiliza Calc en la que los a paso

Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
argumentos se separan por puntos y coma (;) en Basic los argumentos de la función se separan
Celda con lista desplegable en
por comas (,).
Excel
Con esta instrucción declaramos la función RaizX, que necesitará dos parámetros (argumentos),
Tutoriales para tu PC
a los que llamaremos Numero y Raiz.

A diferencia de las subrutinas, identificadas como Sub en Basic, las funciones devuelven un
valor, por lo que serán perfectas para utilizarlas en Calc.

A continuación, escribiremos una nota aclaratoria, para que cualquier usuario que lo precise, o
nosotros mismos, dentro de varios meses, nos describa qué hace esta función. La nota
aclaratoria es una línea que empieza por una comilla sencilla (').

' Devuelve la raíz X de un número; por ejemplo, RaizX( 125, 3) devuelve


la raiz cúbica de 125 Gestión de reservas para pequeños y
medianos hostales, hoteles, pensiones
Tecleamos una tercera línea, que realmente es el corazón de esta sencilla función. Para calcular
y albergues
la raiz X de un número, debemos elevar este número a 1/X. Matemáticamente es sencillo.

Para que la función devuelva el valor calculado, debemos asignarlo al nombre de la función; es
  Suscripciones
tan sencillo como escribir el nombre de la función, un signo igual, y la operación matemática.
Teclea la tercera línea.
RSS 2.0: Publicaciones , Comentarios
RaizX = Numero^(1/Raiz)

Recuerda que no estamos utilizando acentos. Y observa que utilizamos las mismas combinaciones Atom: Publicaciones , Comentarios
de letras mayúsculas y minúsculas en todo momento. Quizás prefieras escribir todo en
minúsculas, o todo en mayúsculas. Eso, a tu gusto.

Para finalizar, le indicaremos a Basic que hemos terminado con nuestra función. Tan sólo
necesitamos una línea más:

Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
End Function

El código debe de quedar tal como muestra la imagen; las líneas adicionales son para mejorar la
lectura del código.

Guardamos el código ( desde el editor Basic, selecciona desde el menú Archivo > Guardar, o haz
clic sobre el botón con forma de disquete, o pulsa Ctrl + G) y cierra el editor Basic.

Paso 3: Probar el funcionamiento


En nuestra hoja de cálculo vamos a teclear unos datos (imagen a la
izquierda): En la celda B2 tecleamos el número 125; en las celdas
C2 a C5 tecleamos 2,3,4 y 5; en la celda D2 escribimos la
siguiente fórmula: =RaizX(B2;C2) y pulsamos Intro. Debe de
mostrar como resultado 11,18.

Observa que desde Calc SI que utilizamos ; en lugar de comas para


separar los argumentos.

Corregimos la fórmula para convertir la celda B2 en referencia absoluta (imagen a la derecha),


por lo que en la celda D2 tendremos la siguiente fórmula: =RaizX( $B$2;C2) y pulsamos

Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
Intro. Ahora extendemos la fórmula al rango  D3:D5 y
comprobamos que todo ha ido perfectamente.

Dónde almacenar la función creada


A la hora de escribir una macro podemos almacenarla en una de estas dos áreas: Mis Macros o
en el documento actual.

Almacenarla en Mis Macros supone que estará disponible para todas las aplicaciones de OOo, y
por lo tanto, para todos los documentos Calc que utilicemos. Pero tiene un inconveniente: esta
área tan sólo está disponible en nuestro equipo; si enviamos por correo un documento utilizando
la función, el receptor del documento no tendrá acceso ésta, y por lo tanto, no la podrá utilizar.

Al mismo tiempo, si almacenamos la macro en el documento actual no será accesible para el


resto de aplicaciones OOo, ni siquiera para otros documentos creados con Calc. En esta caso, en
cambio, al mandar el documento por correo, dado que incorpora la función creada, sí que podrá
ser ejecutada por el receptor del documento.

Podemos almacenar la macro creada en un documento, y guardar éste como plantilla. Cualquier
documento creado a partir de ésta tendrá acceso a la macro, pero seguirá siendo invisible para
otros documentos.

Lo ideal, por tanto, será generar la macro en el documento, y si deseamos utilizarla en otros
documentos dentro de nuestro equipo, copiarla al área Mis Macros. Para el caso que deseamos
utilizar la macro en otro documento, y enviarlo por correo a un tercero, deberemos almacenar
una copia del código macro en el documento.

Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
Copiar la macro desde el documento a Mis Macros, y viceversa
Realmente es sencillo; sigue estos sencillos pasos:

Paso 1: Copiar la macro del documento al portapapeles


Abrimos de nuevo el editor de macros: desde el menú
Herramientas > Macros > Organizar macros >
OpenOffice.org Basic... accedemos a la macro
creada en el documento desde Mi_Función.ods >
Standard > Module1 seleccionamos RaizX y
pulsamos el botón Editar.

Ya en el editor Basic, seleccionamos todo el código de


la función, lo copiamos al portapapeles (desde el menú Editar > Copiar o pulsando la
combinación de teclas Ctrl + C).

Paso 2: Pegar la macro del portapapeles al área Mis Macros


Desde el editor de Basic, hacemos clic sobre el botón

Seleccionar Módulo. Seleccionamos el módulo


Mis Macros > Standard > Module1, y hacemos clic
sobre el botón Editar.

Justo debajo de la sentencia Sub Main / End Sub


hacemos clic, y pegamos (desde el menú Editar >
Pegar o pulsando la combinación de teclas Ctrl + V).

Guardamos los cambios en el editor y cerramos éste.

Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
 

Resumiendo...
Crear nuestras propias funciones para utilizarlas en Calc es sencillo; en la mayoría de las veces
tan solo necesitamos unos básicos conocimientos de programación en Basic; lo más complicado
es decidir donde almacenar la macro que contiene la función, y la respuesta es sencilla: la
almacenaremos en Mis Macros y en el documento, para que en el caso de enviarlo a un tercero,
tenga acceso a toda la funcionalidad de nuestra hoja.

0 comentarios Ordenar por Los más antiguos

Añade un comentario...

Plugin de comentarios de Facebook

•  Categorías: Calc , Calc Medio , Vers. 3.3.x , Vers. 4.0 , Funciones , Macros

•  Etiquetas: calcular , celda , funcion , macro , personalizar , udf


•  03.01.11 •

Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
14 comentarios

Comentario De: Miguel Ortiz [Visitante]

Necesito crear un boton de macros. pero no se como programarlo con la formula

ejemplo en el casilla b2 tengo el valor 10 que es un numero decimal pero en la casilla


f2 quiero que me muestre el numero binario de esa cantidad pero no se como
programarlo gracias

27.03.14 @ 18:50

Comentario De: SalvaDCH [Miembro]

Para Miguel Ortiz:

Hola, no necesitas crear una macro.

Tan sólo tienes que poner en la casilla F2 esto: =DEC.A.BIN(B2;8)

Esto muestra en F2 el número binario, con 8 cifras, del número decimal que contiene
B2.

Gracias por tu consulta, si bien en adelante es preferible que te dirijas al Foro Oficial
(en la columna de la izquierda verás el enlace) desde donde un numeroso grupo de
voluntarios podrán ayudarte.

27.03.14 @ 19:17

Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
Comentario De: Natalia [Visitante]  

Hola, necesito crear un macro. La situación es tengo en una hoja una columna que
entre otras variables tiene la variable edad. Necesito una función que me permita crear
una nueva hoja con un cuadro con los diferentes rangos de edades a modo de ejemplo,
una columna menor a un año, otra entre 1 y 4 años, 5 y 14 etcera. para poder saber
cuantos tengo en esas edades. Estuve viendo la función contar.si y no logro usar, no sé si
necesito un macro o esa función.
Gracias!!!!

29.04.14 @ 21:25

Comentario De: SalvaDCH [Miembro]

Eso lo resolverás de forma muy elegante y fácil con una tabla dinámica .

Mira el ejemplo del apartado Agrupar campos de tipo Numérico

30.04.14 @ 15:40

Comentario De: Dante [Visitante]

He creado una función siguiendo el procedimiento aqui descripto, pero no logro que el
nombre de la función aparezca en el listado de funciones cuando se hace click en el
botón fx de la barra de fórmulas

Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
11.08.14 @ 19:30

Comentario De: SalvaDCH [Miembro]

Hola Dante
Las funciones creadas por los usuarios no se muestran en el botón Fx. Se deben escribir
de forma manual en la barra de fórmulas.

12.08.14 @ 21:31

Comentario De: Pedro Rodriguez [Visitante]

Hola. Quizas la petición sea un poco extraña. Tengo un programa en python que
desearia incorporar como macro en Calc. ¿ hay alguna forma de hacerlo directamente o
tendría que recodificarlo en Basic?.
Muchas gracias. Saludos.

25.09.14 @ 13:08

Comentario De: SalvaDCH [Miembro]

@Pedro: AOO admite tanto OOBasic como Python.


Te recomiendo que le eches un vistazo a la wiki oficial; se está desarrollando un
apartado específico de Python en
https://wiki.openoffice.org/wiki/ES/Manuales/GuiaAOO/TemasAvanzados/Macros/Python

Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
De momento, nosotros no podemos ayudarte en este lenguaje, pero en el Foro Oficial
encontrarás ayuda
Saludos

25.09.14 @ 15:02

Comentario De: luis [Visitante]

Tengo una tabla con 3 columnas de numeros (los saco de otra tabla), con los que hago
un grafico. Necesito que al pulsar un boton(mi idea es asociarlo a un evento para que al
actualizar la primera tabla, actualice el grafico, de momento el boton me vale), me
ordene de mayor a menor la colunma 2, selección extendida, para que actualice el
grafico. Gracias

13.10.14 @ 07:17

Comentario De: SalvaDCH [Miembro]

@Luis: Gracias por tu consulta, si bien es preferible que te dirijas al Foro Oficial (en la
columna de la izquierda verás el enlace) desde donde un numeroso grupo de voluntarios
podrán ayudarte.

13.10.14 @ 21:09

Comentario De: Claudio [Visitante]

Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
Estimado, necesito crear una función que me devuelva el valor de una celda que
contiene formulas.
Aquí hay una macro que lo que hace es devolver el valor sobre la misma celda que
contiene la formula y se basa sobre el copiado y pegado especial:

Sub ConvertirFormulas()

'Copiar la selección de celdas


Selection.Copy

'Pegado Especial utlizando xlPasteValues


Selection.PasteSpecial Paste:=xlPasteValues

'Salir del modo de copiado


Application.CutCopyMode = False

End Sub

El problema es que yo necesito una función que obtenga los valores sin borrar la celda
original que contiene la formula.

Le agradezco su ayuda

Claudio T

24.11.14 @ 19:46

Comentario De: Jos3fs [Visitante]  

Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
Buenas tardes. Necesito un peque ayuda.
1. Necesito una hoja de calculo con varios usuarios y que cada usuario entre a una
columna o fila determinada.
2. Necesito crear un macro, que dependiendo del mes, el usuario al entrar se coloque
en la casilla correcta. Es decir, el usuario entra el 6 de enero, debería estar parado en
la casilla Enero, las demás están bloqueadas. Si pueden guiarme en esto, se los
agradeceria mucho.

30.04.16 @ 22:15

Comentario De: JENNIER HUMBERTO JIMENEZ H [Visitante]

Buenas noches necesito crear una macro que al ingresar información en una misma
línea en varias celdas ej: Expediente, fecha, nombre, oficina, et... al tener todos los
campos llenos oprima un botón y me lo registre en otra hoja o en la misma pero
ubicándose al final del ultimo registro, que me limpie esos campos para ingresar nuevos
datos y haga lo mismo me registre. Me urge trabajo en una empresa ingresando
demasiada información.

Agradezco su pronta ayuda, gracias

Saludos desde Costa Rica

07.07.17 @ 04:07

Comentario De: SalvaDCH [Miembro]

Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
Consideramos que quizás un formulario del usuario te permita realizar lo que
deseas más fácilmente.
Consulta nuestra wiki .
Saludos :)

06.02.18 @ 13:15

Esta publicación tiene 1 reacción esperando moderación...

Form is loading...

  Suscribirse a los comentarios de esta publicación

Otros visitantes vieron...

Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
Optimizar fórmulas en hojas de cálculo Cambios importantes en las funciones de Modelo de Factura con macros para
OpenOffice 4.0.1 Calc imprimir, exportar a PDF y generar
resúmenes

OpenOffice 4.0.1 no sólo Tras varias consultas


incorpora correcciones de realizadas en el Foro
errores y mejoras en la Oficial en español al
Cuando una hoja de cálculo de OpenOffice / velocidad. En lo que respecta a Calc incorpora un respecto, ponemos a vuestra
LibreOffice Calc tiene pocas fórmulas a nadie le importante cambio, que ha sido reclamado disposición este modelo
preocupa la optimización de las mismas. No es para emitir facturas en
necesario. …
OpenOffice Calc, que sirve
Pero cuando el número y co también para LibreOffice
… Ca

Patrocinado por SBS   • © 2018 by SalvaDCH

Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD

También podría gustarte