Detectar excel desde visual Basic
Hola, tengo el siguiente problema
llamo a excel desde visual basic, utilizando Set MiApp = CreateObject("Excel.Application"), cuando finalizo las operaciones lo cierro de esta manera: MiApp.Application.Quit
Set MiLibro = Nothing
Set MiApp = Nothing
Mi problema es que cuando vuelvo a llamar a excel me aparece un libro vacío y otro con la aplicación que llamo, pero se posiciona en el libro vacío confundiendo al usuario. Traté de solucionarlo declarando la api: Declare Function FindWindow Lib "User32" Alias _
"FindWindowsA" (ByVal lpclassname As String, _
ByVal lpwindowname As Long) As Long
y utilizando la siguiente funcion:
Sub DetectExcel() ' El procedimiento detecta que Excel está en ejecución y lo registra.
Dim hWnd As Long
On Error Resume Next
Const WM_USER = 1024
hWnd = FindWindow("XLMAIN", "Excel.Application") ' Si se está ejecutando Excel, esta llamada a la API devuelve el controlador.
If hWnd = 0 Then ' 0 quiere decir que Excel no se está ejecutando .
Exit Sub
Else
SeEstaEjecutando = True
End If
End Sub
Pero siempre sale con hwnd en 0, como si no se estuviera ejecutando.
Les agradecería si alguien por favor me puede ayudar, por favor díganme que estoy haciendo mal.
Saludos
Alice
llamo a excel desde visual basic, utilizando Set MiApp = CreateObject("Excel.Application"), cuando finalizo las operaciones lo cierro de esta manera: MiApp.Application.Quit
Set MiLibro = Nothing
Set MiApp = Nothing
Mi problema es que cuando vuelvo a llamar a excel me aparece un libro vacío y otro con la aplicación que llamo, pero se posiciona en el libro vacío confundiendo al usuario. Traté de solucionarlo declarando la api: Declare Function FindWindow Lib "User32" Alias _
"FindWindowsA" (ByVal lpclassname As String, _
ByVal lpwindowname As Long) As Long
y utilizando la siguiente funcion:
Sub DetectExcel() ' El procedimiento detecta que Excel está en ejecución y lo registra.
Dim hWnd As Long
On Error Resume Next
Const WM_USER = 1024
hWnd = FindWindow("XLMAIN", "Excel.Application") ' Si se está ejecutando Excel, esta llamada a la API devuelve el controlador.
If hWnd = 0 Then ' 0 quiere decir que Excel no se está ejecutando .
Exit Sub
Else
SeEstaEjecutando = True
End If
End Sub
Pero siempre sale con hwnd en 0, como si no se estuviera ejecutando.
Les agradecería si alguien por favor me puede ayudar, por favor díganme que estoy haciendo mal.
Saludos
Alice
1 respuesta
Respuesta de barquisimeto
1