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