(RESUELTO) Codigo macro para actualizar una tabla dinámica

Discute sobre la aplicación de hojas de cálculo
Responder
sincedo
Mensajes: 13
Registrado: Vie Ene 01, 2016 8:18 pm
Ubicación: España

(RESUELTO) Codigo macro para actualizar una tabla dinámica

Mensaje por sincedo »

Hola a todos/as:
Tengo instalado LibreOffice cal versión 24.8.2.1
La hoja 1 contiene varios datos. Luego inserte una tabla dinámica y le dí el nombre TDx.
Ahora me gustaría que la tabla dinámica se actualizara automáticamente, al introducir más datos en la hoja 1.
Creo que esto solo es posible mediante macros.
Por favor: Alguien me puede decir el código de la macro que actualice los datos de la tabla dinamica automáticamente, y si es posible como debo hacer para insertar estos códigos. Y si tiene que ser en la hora 1 ( datos ) o en la hora de la tabla dinámica.
Creo que no va ser fácil, al no tener ningún conocimiento sobre macros, pero seguiré intentandolo
Estuve mirando algunos temas ya publicados sobre esto, pero ninguno me soluciono el problema de momento.
Muchas gracias, un saludo
Adjuntos
Macro TD. pdf.pdf
(38.19 KiB) Descargado 57 veces
Última edición por sincedo el Mar Oct 29, 2024 9:29 pm, editado 1 vez en total.
OpenOffice 3.1 en windows XP
sincedo
Mensajes: 13
Registrado: Vie Ene 01, 2016 8:18 pm
Ubicación: España

Re: Codigo macro para actualizar una tabla dinámica

Mensaje por sincedo »

Rectificación error al escribir:
Donde dice "hora 1" es: hoja 1,
Donde dice "hora de la tabla dinámica" es: hoja de la tabla dinámica.
OpenOffice 3.1 en windows XP
FJCC-ES
Mensajes: 915
Registrado: Mié Mar 25, 2009 1:19 am
Ubicación: Colorado, USA

Re: Codigo macro para actualizar una tabla dinámica

Mensaje por FJCC-ES »

Uso OpenOffice pero creo que esta macro funcionará en LibreOffice.
Escribí una macro que busca los datos en Hoja1 y actualiza la tabla dinámica en Hoja2. La búsqueda de datos empieza en la celda Hoja1.A1 y encuentra todas las celdas hasta la primera columna y fila vacía. Es importante que estén vacías las celdas a la derecha y debajo de las celdas que contienen los datos de la tabla dinámica.
La tabla dinámica en el archivo adjunto tiene el nombre Pivot1. Tendrá que cambiar el nombre en la macro antes de usarla en su archivo.
La macro se ejecuta al cambiar cualquier celda en Hoja1. Hice clic derecho en la etiqueta de Hoja1 y seleccioné "Eventos de la hoja".

Código: Seleccionar todo

Sub Main
oHoja1 = ThisComponent.getSheets.getByName("Hoja1")
oCurs = oHoja1.createCursor()
oCurs.gotoStart()
oCurs.collapseToCurrentRegion()
oDatos = oCurs.RangeAddress

oHoja2 = ThisComponent.getSheets.getByName("Hoja2")
oTablas = oHoja2.getDataPilotTables()
oTabla1 = oTablas.getByName("Pivot1")
oTabla1.setSourceRange(oDatos)
oTabla1.refresh()
End Sub
Adjuntos
TablaDin.ods
(13.23 KiB) Descargado 54 veces
sincedo
Mensajes: 13
Registrado: Vie Ene 01, 2016 8:18 pm
Ubicación: España

Re: Codigo macro para actualizar una tabla dinámica

Mensaje por sincedo »

Gracias por la ayuda:
Copie el siguiene codígo
Sub Main
oHoja1 = ThisComponent.getSheets.getByName("Hoja1")
oCurs = oHoja1.createCursor()
oCurs.gotoStart()
oCurs.collapseToCurrentRegion()
oDatos = oCurs.RangeAddress

oHoja2 = ThisComponent.getSheets.getByName("Hoja2")
oTablas = oHoja2.getDataPilotTables()
oTabla1 = oTablas.getByName("Pivot1")
oTabla1.setSourceRange(oDatos)
oTabla1.refresh()
End Sub

Y lo pege según aparece en los archivos adjuntos. Y me da el siguiente error:
Error de ejecución de BASIC
Se ha producido una excepción Type: Con.sun.star.container. No suchElementExcepción
Mesage
Adjunto 4 archivos; Hoja de datos, tabla dinamica, y dos relacionados con la macro
Un saludo
Adjuntos
Macro TD. pdf.pdf
(38.19 KiB) Descargado 60 veces
TD.1 pdf.pdf
(26.69 KiB) Descargado 53 veces
Hoja.1 pdf.pdf
(24.43 KiB) Descargado 47 veces
OpenOffice 3.1 en windows XP
sincedo
Mensajes: 13
Registrado: Vie Ene 01, 2016 8:18 pm
Ubicación: España

Re: Codigo macro para actualizar una tabla dinámica

Mensaje por sincedo »

Adjunto otro archivo, por exceso de espacio en la respuesta anterior
Adjuntos
Macro TD. pdf.pdf
(38.19 KiB) Descargado 53 veces
Macro - 2 pdf.pdf
(69.34 KiB) Descargado 53 veces
OpenOffice 3.1 en windows XP
FJCC-ES
Mensajes: 915
Registrado: Mié Mar 25, 2009 1:19 am
Ubicación: Colorado, USA

Re: Codigo macro para actualizar una tabla dinámica

Mensaje por FJCC-ES »

Si el nombre de la tabla dinámica es TDx, tiene que cambiar esta linea

Código: Seleccionar todo

oTabla1 = oTablas.getByName("Pivot1")
a

Código: Seleccionar todo

oTabla1 = oTablas.getByName("TDx")
sincedo
Mensajes: 13
Registrado: Vie Ene 01, 2016 8:18 pm
Ubicación: España

Re: Codigo macro para actualizar una tabla dinámica

Mensaje por sincedo »

Perdona por tanta molestia.
No consigo que se actualice automaticamente los datos de la tabla dinámica.
Al intentar ejecutar me da error en: oToTabla1 = oTablas.getByName("Hoja2")
Hice otra hoja de cálculo con LibreOffice calc, parecida a la que usted me envio. Que consta de dos hojas ( hoja1 contiene los datos), (hoja2 contiene la tabla dinamica) y le pegue la macro que usted me envio, y da el mismo error.
Adjunto tres archivos en PDF donde consta: Hoja1, Hoja2, y fallo de la macro.l
Descargué el archivo que usted me envio, y funciona perfectamente.
Gracias
Adjuntos
Tabla-Din(2) - Macro PDF.pdf
(92.36 KiB) Descargado 41 veces
Tabla-Din(2).Hoja2 PDF.pdf
(57.29 KiB) Descargado 56 veces
Tabla-Din(2).Hoja1 PDF.pdf
(57.57 KiB) Descargado 48 veces
OpenOffice 3.1 en windows XP
FJCC-ES
Mensajes: 915
Registrado: Mié Mar 25, 2009 1:19 am
Ubicación: Colorado, USA

Re: Codigo macro para actualizar una tabla dinámica

Mensaje por FJCC-ES »

"Hoja2" es el nombre de la hoja, no de la tabla. ¿Puede subir el archivo de Calc?
sincedo
Mensajes: 13
Registrado: Vie Ene 01, 2016 8:18 pm
Ubicación: España

Re: Codigo macro para actualizar una tabla dinámica

Mensaje por sincedo »

Disculpe las molestias.
Adjunto el archivo de Cal
Nombre del archivo: Tabla-Din(2).ods
Adjuntos
Tabla-Din(2).ods
(24.92 KiB) Descargado 52 veces
OpenOffice 3.1 en windows XP
FJCC-ES
Mensajes: 915
Registrado: Mié Mar 25, 2009 1:19 am
Ubicación: Colorado, USA

Re: Codigo macro para actualizar una tabla dinámica

Mensaje por FJCC-ES »

Ahora la macro funciona y, al cambiar cualquier celda en Hoja1, la tabla dinámica en Hoja2 se actualiza.

Código: Seleccionar todo

Sub Main
oHoja1 = ThisComponent.getSheets.getByName("Hoja1")
oCurs = oHoja1.createCursor()
oCurs.gotoStart()
oCurs.collapseToCurrentRegion()
oDatos = oCurs.RangeAddress

oHoja2 = ThisComponent.getSheets.getByName("Hoja2")
oTablas = oHoja2.getDataPilotTables()
oTabla1 = oTablas.getByName("DataPilot1")
oTabla1.setSourceRange(oDatos)
oTabla1.refresh()
End Sub
Adjuntos
Tabla-Din_fjcc.ods
(16.43 KiB) Descargado 56 veces
sincedo
Mensajes: 13
Registrado: Vie Ene 01, 2016 8:18 pm
Ubicación: España

Re: Codigo macro para actualizar una tabla dinámica

Mensaje por sincedo »

Si funciona perfectamente.
Se puede dar por resuelto este tema.
Muchas gracias, y un saludo
OpenOffice 3.1 en windows XP
Responder