(RESUELTO) Codigo macro para actualizar una tabla dinámica
(RESUELTO) Codigo macro para actualizar una tabla dinámica
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
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
Re: Codigo macro para actualizar una tabla dinámica
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.
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
Re: Codigo macro para actualizar una tabla dinámica
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".
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
Re: Codigo macro para actualizar una tabla dinámica
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
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
Re: Codigo macro para actualizar una tabla dinámica
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
Re: Codigo macro para actualizar una tabla dinámica
Si el nombre de la tabla dinámica es TDx, tiene que cambiar esta linea
a
Código: Seleccionar todo
oTabla1 = oTablas.getByName("Pivot1")Código: Seleccionar todo
oTabla1 = oTablas.getByName("TDx")Re: Codigo macro para actualizar una tabla dinámica
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
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
Re: Codigo macro para actualizar una tabla dinámica
"Hoja2" es el nombre de la hoja, no de la tabla. ¿Puede subir el archivo de Calc?
Re: Codigo macro para actualizar una tabla dinámica
Disculpe las molestias.
Adjunto el archivo de Cal
Nombre del archivo: Tabla-Din(2).ods
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
Re: Codigo macro para actualizar una tabla dinámica
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
Re: Codigo macro para actualizar una tabla dinámica
Si funciona perfectamente.
Se puede dar por resuelto este tema.
Muchas gracias, y un saludo
Se puede dar por resuelto este tema.
Muchas gracias, y un saludo
OpenOffice 3.1 en windows XP