Saltar al contenido

Declaraciones de la API de VBA. Traiga la ventana al frente, independientemente de la aplicación

Solución:

No necesita una API para esto, puede usar algo como:

Sub BringXLToFront()
    AppActivate Application.Caption
End Sub

los AppActivate() El método en VBA toma un argumento de cadena y se activará (es decir, llevarlo al frente) cualquier ventana que contenga eso exacto cuerda.


Sin embargo, es más específico para su pregunta: debe comprender un poco más cómo funcionan las API en VBA; si está utilizando un sistema x64, debe usar la compilación condicional y declarar la función API como segura para punteros mediante el uso de PtrSafe palabra clave y la LongPtr tipo de datos:

#If Win64 Then
    Private Declare PtrSafe Function SetForegroundWindow Lib "user32" _
               (ByVal hWnd As LongPtr) As LongPtr
#Else
    Private Declare Function SetForegroundWindow Lib "user32" _
               (ByVal hWnd As Long) As Long
#End If

Encontré la respuesta a lo que intenté hacer después de investigar un poco más.

Esto traerá la hoja de trabajo que especifique al frente.

Public Declare Function SetForegroundWindow _
Lib "user32" (ByVal hwnd As Long) As Long

Public Sub Bring_to_front()
    Dim setFocus As Long

    ThisWorkbook.Worksheets("Sheet1").Activate
    setfocus = SetForegroundWindow(Application.hwnd)
End Sub
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *