¿Cómo usar la declaración AppActivate en VBA?

La declaración `AppActivate` en VBA se utiliza para activar una aplicación que ya se está ejecutando. Esto puede ser especialmente útil cuando se está trabajando con varias aplicaciones y se desea cambiar el foco a una aplicación específica. Para utilizar `AppActivate`, necesitas conocer el título de la ventana de la aplicación o su ID de tarea. Aquí te muestro cómo puedes usarla:

Usar AppActivate con el Título de la Ventana

Cuando conoces el título exacto de la ventana de la aplicación que deseas activar, puedes pasar este título como un argumento a `AppActivate`.

Sub ActivarAplicacionPorTitulo()
    ' Reemplaza "Título de la Ventana" con el título exacto de la ventana que quieres activar
    AppActivate "Título de la Ventana"
End Sub

Usar AppActivate con el ID de Tarea

En algunos casos, es más práctico o necesario usar el ID de tarea de la aplicación. Esto puede suceder si varias ventanas tienen el mismo título.

Sub ActivarAplicacionPorID()
    ' Debes obtener el ID de la tarea de la aplicación
    Dim tareaID As Integer
    tareaID = Shell("rutaalaaplicación.exe", vbNormalFocus)
    
    ' Ahora puedes activar la aplicación usando el ID de tarea
    AppActivate tareaID
End Sub

Consideraciones

  • Sensibilidad a Mayúsculas y Minúsculas: El título de la ventana es sensible a mayúsculas y minúsculas, por lo que debe coincidir exactamente.
  • Ventana Mínima o Maximizada: Si la ventana de la aplicación está minimizada, `AppActivate` la restaurará, pero si está maximizada, la mantendrá maximizada.
  • Tiempo de Espera: Es posible que necesites usar `DoEvents` o temporizadores para asegurarte de que la aplicación esté lista para ser activada, especialmente si estás lanzando la aplicación y luego intentas activarla inmediatamente.

Ejemplo Completo

Aquí tienes un ejemplo que demuestra cómo abrir una aplicación y luego activarla:

Sub EjecutarYActivarAplicacion()
    Dim appPath As String
    Dim tareaID As Integer
    
    appPath = "C:Program FilesMicrosoft OfficerootOffice16EXCEL.EXE" ' Reemplaza con la ruta a tu aplicación
    tareaID = Shell(appPath, vbNormalFocus)
    
    ' Añade un pequeño retraso para asegurarte de que la aplicación tiene tiempo para abrirse
    Application.Wait Now + TimeValue("00:00:02")
    
    AppActivate tareaID
End Sub

Este código abrirá Excel (o cualquier aplicación que especifiques) y luego activará la ventana para que puedas trabajar en ella. Recuerda cambiar la ruta de `appPath` a la aplicación que deseas ejecutar y activar.

Unlock Your Potential

Excel

Basic - Advanced

Access

Access Basic - Advanced

Power BI

Power BI Basic - Advanced

Help us grow the project