Der folgende Code lässt einen Microsoft Excel-Hintergrundprozess ablaufen, bis mein Programm beendet wurde:
%Vor%Warum? Was vermisse ich?
Verstanden!
application.Workbooks! = application.Workbooks
Diese Eigenschaft stellt keine Variable zur Verfügung, sie generiert einen Wert. Jedes Mal, wenn ich auf die Workbooks-Eigenschaft zugreife, erstelle ich ein neues COM-Objekt.
Ich habe den Code korrigiert und alles ist gut. Danke, alle zusammen.
%Vor%Dies ist ein weit verbreitetes Problem bei Office-Anwendungen. Alle Excel-Add-Ins / Automatisierungsanwendungen sollten ihre Verweise auf Excel-Objekte systematisch freigeben, wenn sie nicht mehr benötigt werden. Wenn Sie den Verweis auf Excel-Objekte nicht systematisch freigeben, kann Microsoft Office Excel nicht ordnungsgemäß heruntergefahren werden. Weitere Informationen finden Sie unter Objekte systematisch freigeben . Es bezieht sich auf Outlook, aber die gleichen Prinzipien können auf alle Office-Anwendungen angewendet werden.
Verwenden Sie System.Runtime.InteropServices.Marshal.ReleaseComObject, um ein Excel-Objekt freizugeben, wenn Sie es nicht mehr verwenden. Setzen Sie dann in Visual Basic eine Variable auf Nothing (null in C #), um den Verweis auf das Objekt freizugeben.
Das ist eine falsche Methode, dies zu tun , aber dies ist einfachste Möglichkeit, das Problem zu beheben :
%Vor%Sie müssen nur alle nicht initialisierten Variablen initialisieren, wenn Sie damit arbeiten müssen, und CloseExcelApp () aufrufen, wenn Sie app schließen müssen.
Tags und Links c# excel office-interop excel-interop