¿Que macro recomiendan para actualizar Tablas dinámicas?

Discute sobre la aplicación de hojas de cálculo

¿Que macro recomiendan para actualizar Tablas dinámicas?

Notapor BOTUCATU » Mié Ene 09, 2019 11:14 pm

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
BOTUCATU
 
Mensajes: 15
Registrado: Vie Ene 04, 2019 9:59 pm

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

Notapor PepeOooSevilla » Jue Ene 10, 2019 5:33 pm

Hola.

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

Código: Seleccionar todo   Expandir vistaContraer vista
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.1.5 en Windows 7 / 10
Por favor, utiliza el Foro para tus consultas, no los mensajes privados
Avatar de Usuario
PepeOooSevilla
 
Mensajes: 1038
Registrado: Sab Abr 04, 2009 6:10 pm
Ubicación: Sevilla (España)

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

Notapor BOTUCATU » Jue Ene 10, 2019 11:16 pm

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
BOTUCATU
 
Mensajes: 15
Registrado: Vie Ene 04, 2019 9:59 pm

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

Notapor Longi » Vie Ene 11, 2019 12:54 pm

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.5, en Windows 10
Openoffice 4.1.3, en Windows 7
Libreoffice 6.0, en Windows 10
Longi
 
Mensajes: 487
Registrado: Dom Ene 20, 2013 9:05 pm
Ubicación: Ourense, Galicia, España

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

Notapor BOTUCATU » Sab Ene 12, 2019 2:20 am

["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: 15
Registrado: Vie Ene 04, 2019 9:59 pm

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

Notapor BOTUCATU » Vie Ene 18, 2019 12:34 pm

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
BOTUCATU
 
Mensajes: 15
Registrado: Vie Ene 04, 2019 9:59 pm

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

Notapor Longi » Mar Ene 22, 2019 10:22 am

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   Expandir vistaContraer vista
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.5, en Windows 10
Openoffice 4.1.3, en Windows 7
Libreoffice 6.0, en Windows 10
Longi
 
Mensajes: 487
Registrado: Dom Ene 20, 2013 9:05 pm
Ubicación: Ourense, Galicia, España

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

Notapor BOTUCATU » Jue Ene 24, 2019 12:48 pm

¡Muy interesante! Muchas gracias. Cuando tenga resultados informaré al foro.
Hasta pronto.
OpenOffice 3.1 en Windows 7 SP1
BOTUCATU
 
Mensajes: 15
Registrado: Vie Ene 04, 2019 9:59 pm


Volver a Calc

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 6 invitados