Pytanie : Dlaczego dlaczego zwłoki Przodować przedmiot od pamięć.

My ono widzieć ono.  Ten niemądry EXCEL.EXE zostawać osiadły w pamięć nieważne co podejście ty brać.  I wyrównywać widzieć wieloskładnikowy EXCEL.EXE przedmiot pojawiać się w the proces lista w zadanie kierownik gdy w rzeczywistości mój kod tylko otwierać jeden występowanie.  I przychodzić pamięć z sposób wszystkie EXCEL od pamięć.  I mieć nadzieję >
1 pomagać twój cierpienie w the matter.

1:
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:
Imports System
Import System.Diagnostics

Intymny Okręt podwodny printdocument1_EndPrint (ByVal nadawca Jako Przedmiot, ByVal e Jako System.Drawing.Printing.PrintEventArgs) Rękojeść printdocument1.EndPrint

        Robić Podczas Gdy Prawdziwy
            'zabijać wszystkie mieszkaniec przodować w pamięć z krańcowy uprzedzenie
            Jeżeli CloseAllResidentExcels () = Prawdziwy Wtedy
                Wyjście
            Kończyć Jeżeli
        Pętla
        
        'reinit twój vars tutaj
        xlApp = CType (CreateObject ("Excel.Application"), Excel.Application)
        wbkToShow = xlApp.Workbooks.Add (XlWBATemplate.xlWBATWorksheet)
        wshToShow = DirectCast (wbkToShow.Worksheets ("Sheet1"), Excel.Worksheet)

    Końcówka Okręt podwodny
    Intymny Funkcja CloseAllResidentExcels () Boolowski

        CloseAllResidentExcels = Fałszywy

        Próba
            'zapętlać ten proces until tam  być żadny ważny id
            Ćmić Prc Proces
            Ćmić localByName Proces () = Process.GetProcessesByName ("PRZODOWAĆ")
            Prc = Process.GetProcessById (localByName ((0)). Id)
            Prc.Kill ()

        Chwyt wyjątek Jako Wyjątek
            CloseAllResidentExcels = Prawdziwy
        Końcówka Próba

    Końcówka Funkcja
Related Rozwiązanie: excel w memory

Odpowiedź : Dlaczego dlaczego zwłoki Przodować przedmiot od pamięć.

ReleaseComObject i FinalReleaseComObject zawsze pracować.  (Jeżeli kiedykolwiek).  Być być the jedyny sposób I być sprawnie zupełnie consistantly the ExcelApp w che I pracować.  Kartoteka Zabijać jakaś inny już-otwierać Przodować Kartoteka….tylko the jeden otwierać twój app przy ten czas ponieważ ty przechodzić twój ExcelApp przedmiot.

I używać the "Application.DoEvents ()" sekcja właśnie ono mała ilość czas.  Ty móc ono.

(1):
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
Oznajmiać Funkcja PostMessage Wyzwolenie "user32" Pseudonim "PostMessageA" (ByVal hwnd Jako Int32, ByVal wMsg Jako Int32, _
    ByVal wParam Jako Int32, ByVal lParam Jako Int32) Jako Int32

Const WM_QUIT = &H12


Intymny Okręt podwodny ExcelWorker

    MyExcel Jako Microsoft.Office.Interop.Excel.ApplicationClass
    
    'Stuffz - stuffz - blah Robić wszystkie twój Przodować Stuffz

    MyExcel.Quit

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

    Ćmić i Jako Int32
    Dla i = (0) 10000
        Application.DoEvents ()
    Następnie

    MyExcel = Nic

Końcówka Okręt podwodny
Inne rozwiązania  
 
programming4us programming4us