Libreoffice Calc, seleccionar rango de datos para formulario

Discute sobre la aplicación de hojas de cálculo
Responder
ashash2
Mensajes: 4
Registrado: Mar Sep 10, 2019 9:45 am

Libreoffice Calc, seleccionar rango de datos para formulario

Mensaje por ashash2 »

Hola a todos,

Tengo libreOffice Calc en la oficina y le estoy haciendo una hoja de cálculo a unos compañeros que utilizan a modo de base de datos.
La versión que utilizo es la 6.0.7.3.
Para que no se líen, quiero que los datos los pongan mediante un formulario (Datos -> Formulario..) pero previo a esto, hay que seleccionar todo el rango de datos actual. Como resulta que la información que tienen aquí se la he rescatado de una tabla Access (que queremos dejar), ya tienen 1200 registros, y quiero evitarles tener que andar haciendo la selección a mano, quiero ponerles una macro.
La macro tiene que seleccionar todo el rango de datos, y luego abrir la opción de menú Datos -> Formulario..
El que me seleccione me ha llegado a funcionar, pero no lo de abrir la opción de menú.
El problema está en que al principio me seleccionaba la macro lo oportuno, pero ahora, no coge todo el rango, se queda solo en unas pocas filas.
Si ejecuto a mano los comandos de la macro, es decir las combinaciones CTRL+Shift+ flechas izda y CTRL+Shift+ flechas abajo se queda donde mismo se queda la macro.
Tengo que ejecutar varias veces la combinación CTRL+Shift+ flechas abajo para llegar al final del conjunto de datos. Antes no pasaba, pero algo hay en los datos que no selecciono todo de una vez.

¿Hay alguna combinación para seleccionar todos las celdas con datos de alguna manera?
¿Que puede haber en los datos que hagan que no detecte que en ese punto no se terminan los datos (no hay filas en blanco...)?
¿Se puede poner en una macro que ejecute " Datos -> Formulario..?"

Gracias por adelantado!!!

mi macro es :

Código: Seleccionar todo

REM  *****  BASIC  *****

sub Main
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$A$1"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "By"
args2(0).Value = 1
dispatcher.executeDispatch(document, ".uno:GoDownToEndOfDataSel", "", 0, args2())
rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "By"
args3(0).Value = 1
dispatcher.executeDispatch(document, ".uno:GoRightToEndOfDataSel", "", 0, args3())
end sub
Última edición por PepeOooSevilla el Mar Sep 10, 2019 4:56 pm, editado 1 vez en total.
Razón: Etiqueta "code"
Avatar de Usuario
PepeOooSevilla
Mensajes: 1480
Registrado: Sab Abr 04, 2009 6:10 pm
Ubicación: Sevilla (España)

Re: Libreoffice Calc, seleccionar rango de datos para formul

Mensaje por PepeOooSevilla »

Hola.
Te damos la bienvenida al Foro de OpenOffice / LibreOffice y, por favor, no dejes de leer la Guía de supervivencia.
Te adjunto un archivo ejemplo con varias hojas. Sólo al activar la "Hoja1" se abre el formulario correspondiente.
En las pruebas que he hecho en mi versión de LibreOffice (ver firma) no es necesario seleccionar un rango.
La macro está asociada al suceso "Activar documento" dentro de "Sucesos de hoja ..." (Hoja > Sucesos de hoja ... > Activar documento), así como al suceso "Abrir documento" en Herramientas > Personalizar > Sucesos > Abrir documento.

Código: Seleccionar todo

REM  *****  BASIC  *****
Option Explicit

sub Main
	rem ----------------------------------------------------------------------
	rem define variables
	dim document   as object
	dim dispatcher as object
	dim oHoja as object
	rem ----------------------------------------------------------------------
	rem LAS DOS LÍNEAS SIGUIENTES POR SI EL ARCHIVO TUVIERA VARIAS HOJAS
	rem SI SOLO EXISTE LA HOJA DEL FORMULARIO NO SERÍAN NECESARIAS
	oHoja = ThisComponent.getSheets.getByName("Hoja1")
	ThisComponent.getCurrentController.setActiveSheet(oHoja)
	rem ----------------------------------------------------------------------
	rem get access to the document
	document   = ThisComponent.CurrentController.Frame
	dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
	rem ----------------------------------------------------------------------
	dim args1(0) as new com.sun.star.beans.PropertyValue
	args1(0).Name = "ToPoint"
	args1(0).Value = "$A$1"
	dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
	rem SE ACTIVA DATOS > FORMULARIO -----------------------------------------
	dispatcher.executeDispatch(document, ".uno:DataForm", "", 0, Array())
end sub
Saludos cordiales.
Adjuntos
FORO_CALC_Pruebas_Datos_Formulario.ods
LibO Calc 6.2.7 (Still / Empresarial / Estable)
(13.66 KiB) Descargado 174 veces
LibreOffice 6.4.6. Windows 10. Java 8 rev. 261 (64 bits)
Por favor, utiliza el Foro para tus consultas, no los mensajes privados
Si usas OpenOffice/LibreOffice trabaja y guarda en ODT, ODS, ODP, ... Y haz copias de seguridad.
ashash2
Mensajes: 4
Registrado: Mar Sep 10, 2019 9:45 am

Re: Libreoffice Calc, seleccionar rango de datos para formul

Mensaje por ashash2 »

Hola,
Me ha funcionado perfecto!! Muchas gracias!!
Lo que no se es por qué a mi, me hacía falta seleccionar todo y a ti no, miro la macro y no llego a entender la diferencia.
Por cierto, también he visto ya por que el formulario no me cogía todos los datos, en la primera celda de algunas filas, estaban en blanco, y el formulario interpreta entonces que hasta ahí, llega el contenido actual del formulario.

Gracias de nuevo!
OpenOffice 3.1 en Windows Vista
ashash2
Mensajes: 4
Registrado: Mar Sep 10, 2019 9:45 am

Re: Libreoffice Calc, seleccionar rango de datos para formul

Mensaje por ashash2 »

Hola Pepe,
Espero que puedas leer este mensaje y echarme una mano.
Como te dije, descargue tu ejemplo y lo adapté a mi tabla y en principio iba todo bien. Pero ahora me he dado cuenta de un asunto, me sale el formulario perfecto pero si le doy a "Nuevo" para meter otra fila más, el programa no se va a insertar al final, sino a la fila 2, machacandome lo que hay si le meto algún dato.
¿Tiene esto solución?, la acción de pulsar sobre Nuevo, debería añadir una fila al final..

Gracias por adelantado!!
OpenOffice 3.1 en Windows Vista
Avatar de Usuario
PepeOooSevilla
Mensajes: 1480
Registrado: Sab Abr 04, 2009 6:10 pm
Ubicación: Sevilla (España)

Re: Libreoffice Calc, seleccionar rango de datos para formul

Mensaje por PepeOooSevilla »

Hola.
El botón "Nuevo" debería haberse traducido por "Grabar" o "Actualizar" ya que lo que hace es grabar los nuevos datos tecleados en el registro que indica el indicador de registros (ver imagen) y avanzar al registro siguiente. Si nos encontramos en el registro 2 de 10, modificamos y pinchamos en "Nuevo" entonces actualiza/graba los nuevos datos en el registro actual, es decir, en el 2 y nos muestra el registro 3. Sólo genera un nuevo registro si el indicador de registros muestra el mensaje de "Registro nuevo".
La Ayuda de LibreOffice Calc dice al respecto:
  • "New: fill the record (table row cells) with the form fields contents and jump to the next record or add a new record in the bottom of the table."
    Nuevo: llene el registro (celdas de fila de la tabla) con el contenido de los campos del formulario y salte al siguiente registro o agregue un nuevo registro al final de la tabla.
Por favor, si con esta respuesta consideras que el tema está resuelto, indícalo (¿Cómo marcar como RESUELTO un tema?), ya que, de esta forma, conseguiremos un foro más ordenado.
Saludos cordiales.
Adjuntos
LibO Calc 6.2.7
LibO Calc 6.2.7
LibreOffice 6.4.6. Windows 10. Java 8 rev. 261 (64 bits)
Por favor, utiliza el Foro para tus consultas, no los mensajes privados
Si usas OpenOffice/LibreOffice trabaja y guarda en ODT, ODS, ODP, ... Y haz copias de seguridad.
ashash2
Mensajes: 4
Registrado: Mar Sep 10, 2019 9:45 am

Re: Libreoffice Calc, seleccionar rango de datos para formul

Mensaje por ashash2 »

Gracias Pepe pero en la descripción de la funcionalidad del botón, tampoco han sido muy claros, mezcla dos asuntos: "lene el registro (celdas de fila de la tabla) con el contenido de los campos del formulario y salte al siguiente registro o agregue un nuevo registro al final de la tabla." Si hiciese lo que hay a partir del "o", pero resulta que no, que el nombre del botón no se corresponde con la funcionalidad, Gracias de nuevo por tu ayuda
OpenOffice 3.1 en Windows Vista
Responder