Como mantener detenida la ejecución de una macro hasta que finalice una consulta sql desde excel.

2 envíos / 0 nuevos
Último envío
skorpio
Imagen de skorpio
Offline
última acción: Hace 2 meses 1 semana
alta: 21/04/2021 - 20:56
Puntos: 35
Como mantener detenida la ejecución de una macro hasta que finalice una consulta sql desde excel.

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,

Etiquetas: 

skorpio
Imagen de skorpio
Offline
última acción: Hace 2 meses 1 semana
alta: 21/04/2021 - 20:56
Puntos: 35
RESUELTO!! Como mantener detenida la ejecución de una macro hast

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.