Buenas tardes,
Mi pregunta es la siguiente :
¿Existe algún modo de controlar el estado de una consulta a una base de datos desde excel,?
Lo que yo pretendo es realizar un filtro en una tabla dinámica, pero para ello quiero asegurarme que no intente hacer el filtro mientras la tabla se este actualizando, ya que de lo contrario me arroja errores. Pero no se como hacerlo, ya que instantáneamente después de ejecutar el refresh la macro sigue corriendo independientemente de que el actualizado de la tabla dinámica este en proceso.
Supongamos la siguiente macro:
Sub met_miMacro()
On Error GoTo etq_GestionarErrores:
'Actualizo todas las conexiones existentes en mi libro (En mi caso solo hay una).
ActiveWorkbook.RefreshAll
' Una vez comprobado que ya ha terminado de actualizarse (Esto es lo que no se como controlar), llamo a otro método que realiza un filtro en una tabla dinámica:
Call met_filtroSimpleFechaEnTablaDinamica(BddDatosDinamicos, "td_DatosCastellon", "Fecha", date_mi_fecha_prevision)
etq_GestionarErrores:
If Err Then
Call met_restablecerBarraEstado
Dim str_mensaje As String
str_mensaje = "Se ha producido un error. Tipo de Error = " & Err & " Descripción: " & Err.Description
MsgBox str_mensaje, vbCritical, "Mi Aplicacion "
End If
End Sub
Muchas gracias de antemano!!
Un saludo,
El codigo de la solución es :
'Actualizar todas las conexiones existentes en mi libro.
ActiveWorkbook.RefreshAll
'Espera a que finalice la actualización antes de continuar con la ejecución del código.
Application.CalculateUntilAsyncQueriesDone
If Not Application.CalculationState = xlDone Then
DoEvents
End If
' Una vez finalizada la actualización de la querie continua la ejecución del código.