Cuestión : Cómo a la matanza limpia un objeto de Excel de la memoria.

Todos le hemos visto.  Ese EXCEL.EXE tonto permanece residente en memoria no importa qué el acercamiento usted toma.  Incluso he visto objetos múltiples de EXCEL.EXE aparecer en la lista de proceso en encargado de tarea cuando de hecho mi código abre solamente una ocurrencia.  Subí con una manera de matar todo el Excel de la memoria.  Espero que esto ayude a su angustia en el class= " lineNumbers " >
1 del >

: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: sistema codeBody de los >Imports del " prettyprint " del class= del id= " codeSnippet718371 " del >
 " claro " de 
class= > " claro " del
soluciones >Related class= >excel qRelatedParent " del class= " de la memoria del title= " del href= " /Microsoft/Development/MS_Access/Q_26107862.html " del

Respuesta : Cómo a la matanza limpia un objeto de Excel de la memoria.

ReleaseComObject y FinalReleaseComObject no trabajan siempre.  (Si hacen nunca).  Ésta es la única manera que he podido absolutamente consistantly matar el ExcelApp en el cual estoy trabajando.  Esto no mata ningún otro ya-abre los archivos de Excel….solamente el uno se abrió por su app en aquel momento porque usted pasa su objeto de ExcelApp.

Utilizo la sección de “Application.DoEvents ()” apenas para darle una pequeña cantidad de hora de cerrarse.  Usted no puede necesitarla.

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
Declarar la liberación “user32” alias “PostMessageA” de PostMessage de la función (el hwnd como Int32, wMsg como Int32, el _ de ByVal de ByVal
    wParam de ByVal como lParam de Int32, de ByVal como Int32) como Int32

Const WM_QUIT = &H12


ExcelWorker secundario privado

    MyExcel como Microsoft.Office.Interop.Excel.ApplicationClass
    
    '- Soso - soso soso hace todo su Excel Stuffz

    MyExcel.Quit

    PostMessage (Excel.Hwnd, WM_QUIT, 0, 0)

    Amortiguar i como Int32
    Para i = 0 a 10000
        Application.DoEvents ()
    Después

    MyExcel = nada

Submarino del extremo
Otras soluciones  
 
programming4us programming4us