¿Que macro recomiendan para actualizar Tablas dinámicas?

Discute sobre la aplicación de hojas de cálculo
Responder
BOTUCATU
Mensajes: 34
Registrado: Vie Ene 04, 2019 9:59 pm

¿Que macro recomiendan para actualizar Tablas dinámicas?

Mensaje por BOTUCATU »

Buenas tardes. Suelo utilizar muchas tablas dinámicas en mi trabajo y hace años que vengo utilizando una macro para actualizar varias tablas dinámicas específicas al mismo tiempo (macro que bajé del foro Openoffice en inglés).

Bueno el problema es que al ejecutar esta macro (que por cierto es muy útil) a veces el opencalc cae y se cierra y este inconveniente suele pasar a menudo. Por suerte no pierdo mi trabajo pero si suelo tardar mucho para recuperar y reabrir el archivo y con el tiempo esto se torna desagradable para el trabajo. Utilizo la versión 4.1.6 de Openoffice, tengo 8gb de RAM procesador de 3.2 Ghz Core i5 4460
y Windows 7SP1 y mucho espacio en disco duro.

Quería consultar si a día de hoy existe alguna macro más segura o alguna aplicación funcional para Opencalc y que no produzca esta clase de fallos (al actualizar muchas tablas dinámicas el opencalc produce error y se cierra).

La macro que vengo usando es la siguiente (los números entre paréntesis representan las tablas dinámicas y donde dice Hoja1 se refiere a la hoja del archivo):

Sub update_PT

sheet = thisComponent.Sheets.getByName("Hoja1")
PT = sheet.DataPilotTables.getByIndex(0)
PT.refresh()
PT = sheet.DataPilotTables.getByIndex(1)
PT.refresh()
PT = sheet.DataPilotTables.getByIndex(3)
PT.refresh()

end sub


Agradezco desde ya vuestros comentarios.
OpenOffice 3.1 en Windows 7 SP1
Avatar de Usuario
PepeOooSevilla
Mensajes: 1480
Registrado: Sab Abr 04, 2009 6:10 pm
Ubicación: Sevilla (España)

Re: ¿Que macro recomiendan para actualizar Tablas dinámicas?

Mensaje por PepeOooSevilla »

Hola.

Para actualizar todas las tablas dinámicas de un archivo con varias hojas utilizo:

Código: Seleccionar todo

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

Sub ActualizarTablasDinamicas()
Dim Hoja as Object
Dim TablaDinamica as Object

For Each Hoja In ThisComponent.Sheets
    For Each TablaDinamica In Hoja.DataPilotTables
        TablaDinamica.Refresh()
    Next TablaDinamica
Next Hoja
End Sub
Saludo cordiales.
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.
BOTUCATU
Mensajes: 34
Registrado: Vie Ene 04, 2019 9:59 pm

Re: ¿Que macro recomiendan para actualizar Tablas dinámicas?

Mensaje por BOTUCATU »

Estuve probando la macro de PepeOooSevilla. Una vez funcionó la actualización, y otras veces me sucedió el mismo problema (al actualizar muchas tablas dinámicas el opencalc produce error y se cierra). Bueno es una realidad que mi archivo de Opencalc está exigido porque utilizo muchísimas fórmulas y formatos condicionales. Estuve pensando que tal vez sea interesante darle siempre un recálculo automático de celdas al archivo (esto antes de ejecutar las macros de actualización tablas dinámicas).
Gracias por interesarse Sr. Sevilla. Estaré informando si tengo suerte con el experimento del recálculo de celdas mencionado.

Cordiales Saludos.
OpenOffice 3.1 en Windows 7 SP1
Longi
Mensajes: 804
Registrado: Dom Ene 20, 2013 9:05 pm
Ubicación: Ourense, Galicia, España

Re: ¿Que macro recomiendan para actualizar Tablas dinámicas?

Mensaje por Longi »

Qué tal un wait de 100 milisegundos de una tabla a otra?
A veces hay que dar un poco de margen. Para que se reorganice el sistema en procesos complejos.

Un saludo!
Openoffice 4.1.7, en Windows 10
Libreoffice 6.4.2, en Windows 10
BOTUCATU
Mensajes: 34
Registrado: Vie Ene 04, 2019 9:59 pm

Re: ¿Que macro recomiendan para actualizar Tablas dinámicas?

Mensaje por BOTUCATU »

["Longi"]Qué tal un wait de 100 milisegundos de una tabla a otra?
A veces hay que dar un poco de margen. Para que se reorganice el sistema en procesos complejos.

¡Muy interesante! Voy a estudiar esa alternativa. Muchas gracias. :D
OpenOffice 3.1 en Windows 7 SP1
BOTUCATU
Mensajes: 34
Registrado: Vie Ene 04, 2019 9:59 pm

Re: ¿Que macro recomiendan para actualizar Tablas dinámicas?

Mensaje por BOTUCATU »

Buen día

Estuve analizando la propuesta del "wait" de 100 milisegundos y como no logré hacerlo aún, pues he decidido (mientras tanto) probar con algo parecido.
Agregué un "msgbox" (macro de cuadro de mensaje) entre las macros que actualizan los distintos pilotos de datos.
Con esto logré que el sistema descanse hasta que se le haga un click en el botón "Aceptar" que aparece al ejecutarse el msgbox.
Las caídas (crash) del opencalc se redujeron pero drásticamente (a veces sigue sucediendo, pero muchísimo menos que antes).
Bueno estas son las novedades sobre el tema por ahora.
Agradezco la gentileza de quienes se interesaron y se siguen interesando por el tema.

Saludos cordiales.
OpenOffice 3.1 en Windows 7 SP1
Longi
Mensajes: 804
Registrado: Dom Ene 20, 2013 9:05 pm
Ubicación: Ourense, Galicia, España

Re: ¿Que macro recomiendan para actualizar Tablas dinámicas?

Mensaje por Longi »

Buenas!

La implementación sería algo así, aunque sin hacer pruebas seguro que algo no ha quedado bien:

Para el código que usabas:

Sub update_PT

sheet = thisComponent.Sheets.getByName("Hoja1")
PT = sheet.DataPilotTables.getByIndex(0)
PT.refresh()
Wait 100 'o una cifra mayor
PT = sheet.DataPilotTables.getByIndex(1)
PT.refresh()
Wait 100 ' o una cifra mayor
PT = sheet.DataPilotTables.getByIndex(3)
PT.refresh()

end sub

Para el código de PepeOooSevilla

Código: Seleccionar todo

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

Sub ActualizarTablasDinamicas()
Dim Hoja as Object
Dim TablaDinamica as Object

For Each Hoja In ThisComponent.Sheets
    For Each TablaDinamica In Hoja.DataPilotTables
        TablaDinamica.Refresh()
        Wait 100 ' o una cifra mayor
    Next TablaDinamica
Next Hoja
End Sub
Seguramente el tiempo de espera sea superior a los 100 milisegundos, ya que un msgbox viene a ser lo mismo pero de tiempo indefinido, y a pesar de eso te da problemas de vez en cuando.
Debieras mirar si siempre es en la misma tabla dinámica, y de ser así, seguramente haya algo incorrecto en el diseño general.

Otro saludo!
Openoffice 4.1.7, en Windows 10
Libreoffice 6.4.2, en Windows 10
BOTUCATU
Mensajes: 34
Registrado: Vie Ene 04, 2019 9:59 pm

Re: ¿Que macro recomiendan para actualizar Tablas dinámicas?

Mensaje por BOTUCATU »

¡Muy interesante! Muchas gracias. Cuando tenga resultados informaré al foro.
Hasta pronto.
OpenOffice 3.1 en Windows 7 SP1
Responder