/ / Excel COM Objekt Cast Error - c #, Excel, Müllsammlung

Excel COM Objekt Cast Error - c #, Excel, Müllsammlung

Ich versuche, die Doppelpunktnotation in meinem Code zu vermeiden (siehe Wie säubere ich Excel-Interop-Objekte ordnungsgemäß?). Ich erhalte jedoch einen Fehler, wenn ich versuche, den folgenden Code zu ändern

Excel.Workbook oWB;
...
oWB.Sheets[oWB.Sheets.Count].Delete();
oWB.Sheets[oWB.Sheets.Count].Delete();
oWB.Sheets[oWB.Sheets.Count].Delete();

dazu

Excel.Sheets oS;
oS = oWB.Sheets;
//error occurs in the following line
oS = oWB.Sheets[oS.Count];
oS.Delete();
oS.Delete();
os.Delete();

Der Fehler ist "Unable to cast COM object of type "System.__ComObject" to interface type "Microsoft.Office.Interop.Excel.Sheets". This operation failed because the QueryInterface call on the COM component for the interface with IID "{000208D7-0000-0000-C000-000000000046}" failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE))."

Jede Hilfe wird geschätzt.

Antworten:

1 für die Antwort № 1

Sie müssen eine neue Variable vom Typ deklarieren Sheet. oS ist vom Typ Sheets, während oS.Sheets[os.Count] ist vom Typ Sheet (ohne abschließendes "s"). Da diese vom Laufzeit-Standpunkt aus nichts miteinander zu tun haben, müssen Sie eine Zwischenvariable mit dem entsprechenden Typ deklarieren Sheet.