Tengo un little problem...a ver si me podeis ayudar :)
El caso es que quiero que se cierren todos los Excel que
tengo residentes en memoria (es decir, todos los "Excel"
que se vean activos en la famosa ventana de
CRTL+ALT+SUPR). Es que suelen haber varios abiertos cuando
trabajo con mi aplicacion, ya que pasa datos de Excel a
Access continuamente y al final se van quedando abiertos y
el programa me casca. Como puedo detectar los que hay y
quitarlos? Lo intento de esta manera pero no me hace ni
caso:
Dim xl As Excel.Application
xl.ActiveWorkbook.Close
xl.Quit
Set xl = Nothing
Abre y coloca este codigo en un modulo, tienes que trabajar con el kernel
directamente
Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As Long) As Long
Declare Function SendMessage Lib "user32" Alias _
"SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long
Declare Function keybd_event Lib "user32" (ByVal bVk As Byte, _
ByVal bScan As Byte, _
ByVal dwFlags As Long, _
ByVal dwExtraInfo As Long)
Global Const KEYEVENTF_KEYUP = &H2
Global Const VK_LWIN = &H5B
y este codigo en cualquier form,
Public Sub VerificaExcel()
If Controlador Then
Set xlapp = CreateObject("Excel.Application")
Set xlbook = xlapp.Workbooks.Add(1)
Set xlsheet = xlbook.Worksheets(1)
Controlador = False
Else
On Error Resume Next
Set xlapp = GetObject("", "Excel Application")
If Err.Number <> 0 Then ExcelNones = True
Err.Clear
Form6.BuscaExcel
End If
End Sub
y luego donde estes, llamalo
Call Form6.VerificaExcel
Luis Mizraim Gutierrez Pedroza
Analista de Sistemas
INFRA S.A
+582122579910
lgutierrez@infrarad.com
Caracas/Venezuela
www.infrarad.com
               (
geocities.com/es/ensolva/Descargas)                   (
geocities.com/es/ensolva)                   (
geocities.com/es)