Ошибка приведения объекта Excel COM

Я пытаюсь избежать обозначения "двойной точки" в своем коде (см. Как правильно очистить объекты взаимодействия Excel?). Однако я получаю сообщение об ошибке, когда пытаюсь изменить следующий код

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

к этому

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

Ошибка '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)).'

Любая помощь приветствуется.


person kaoao    schedule 29.09.2014    source источник


Ответы (1)


Вы должны объявить новую переменную типа Sheet. oS относится к типу Sheets, а oS.Sheets[os.Count] относится к типу Sheet (без финальной буквы "s"). Поскольку с точки зрения времени выполнения это несвязанные типы, вы должны объявить промежуточную переменную с соответствующим типом Sheet.

person Seb    schedule 29.09.2014
comment
Спасибо за ответ - person Seb; 29.09.2014