Como puedo hacer una pausa dentro de un Macro en Excel

El problema es que trato de ejecutar esta Macro

Sub Actualizar()

ActiveSheet. PivotTables("TablaDinámica1"). PivotCache. Refresh

Application. Wait DateAdd("s", 30, Now)
ActiveWorkbook. RefreshAll

End Sub

Pero no hace la pausa entre la primer acción y la segunda, hace la pausa al iniciar la macro y después de los 30 s ejecuta la macro completa, ¿qué estoy haciendo mal?

1 respuesta

Respuesta
2

Intenta con lo siguiente:

Sub Actualizar()
    ActiveSheet. PivotTables("TablaDinámica1"). PivotCache. Refresh
    DoEvents
    Application. Wait Now + TimeValue("00:00:05")
    DoEvents
    ActiveWorkbook. RefreshAll
End Sub

' : )
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias
' : )

Hola Dante Amor

Gracias por tu respuesta pero aun no logro que primero actualice todo el libro y al final solo actuelice la tabla dinámica.

Sub Actualizar()
ActiveWorkbook.RefreshAll
DoEvents
Application.Wait Now + TimeValue("00:00:30")
DoEvents
ActiveSheet.PivotTables("TablaDinámica1").PivotCache.Refresh
End Sub

Esta instrucción:

ActiveWorkbook. RefreshAll

También actualiza las tabla dinámicas.

Entonces, lo último que pusiste, actualiza el libro (incluyendo la tabla dinámica), después hace la pausa de 30 segundos y después vuelves a indicarle que actualice nuevamente la tabla dinámica.

La pausa de 30 segundos efectivamente se cumple, lo que no entiendo es lo que quieres lograr.

La tabla dinámica depende de una base vinculada desde access entonces la intención es que primero actualice ese vínculo, y ya que esta actualizado, entonces actualice la tabla Dinámica, porque si no por el tipo de datos se actualiza primero la tabla dinámica cuando todavía no está lista la base que viene desde access...  Gracias nuevamente 

¿Y cómo actualizas ese vínculo con access?

Es decir, no utilices RefreshAll, pues como ya te dije eso también actualiza la tabla dinámica.

Revisa cómo puedes actualizar únicamente ese vínculo, revisa en el Menú Datos, Conexiones, Conexiones, en la ventana que se abre selecciona la conexión a access y presiona el botón Actualizar, en este caso solamente selecciona la conexión de access y presiona el botón "Actualizar". No presiones el botón "Actualizar todo".

Si lo anterior actualiza el vínculo sin actualizar la tabla dinámica, entonces activa la grabadora de macros y repite el paso anterior, regresa a las macros y presiona "Detener grabación"

Ahora toma el código que te generó, después escribe la pausa y por último que actualice la tabla dinámica

Sub Actualizar()
'aquí pon el código para actualizar el vínculo de access
'
'
DoEvents
Application. Wait Now + TimeValue("00:00:30")
DoEvents
ActiveSheet.PivotTables("TablaDinámica1").PivotCache.Refresh
End Sub

':)
S a l u d o s . D a n t e   A m o r
':) Si es lo que necesitas. Recuerda valorar la respuesta. G r a c i a s.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas