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 № 1Sie 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
.