2016-10-04 6 views
0

Я столкнулся с нечетной проблемой, с которой я не могу найти решение. Я пытаюсь удалить любой рабочий лист в книге, содержащей определенное имя листа, и я получаю это исключение: «Не удалось получить свойство« Удалить »класса« Рабочий лист ». Я могу использовать класс листа в других местах, но когда я пытаюсь использовать Delete(); метод или даже тот, который устанавливает видимость этого листа, я получаю то же самое. Любая помощь в отношении почему была бы оценена!ComException При попытке удалить лист из файла Excel в C#

Microsoft.Office.Interop.Excel.Sheets TestWorksheets = TestBook.Worksheets; 
if (TestWorksheets.Count > NumberofsheetsIWantToKeep) 
{ 
    int WorkSheetCounter = TestWorksheets.Count; 
    while (WorkSheetCounter > NumberofsheetsIWantToKeep) 
    { 
     if(TestWorksheets[WorkSheetCounter].Name.Contains("blah")) 
     { 
     TestWorksheets[WorkSheetCounter].Delete(); 
     } 
     WorkSheetCounter--; 
    } 
} 
+0

https://msdn.microsoft.com/en-us/library/s9kdkks3.aspx – MethodMan

+0

@MethodMan Спасибо за ответ! Я видел это, когда искал решение, и, по моему мнению, я считаю, что я удаляю рабочий лист так, как они указали, но он все еще не работает. Это моя проблема! – Vincep92

+0

используйте цикл for и счетчик/индекс, если рабочий лист соответствует тому, что вы ищете, на основе ссылки, которую я опубликовал ранее, тогда вы сможете взять 1 строку и сделать ее в цикле for, используя тот же подход. Надеюсь, это имеет смысл. – MethodMan

ответ

0

Оказалось, что мне пришлось активировать рабочую книгу и рабочий лист, прежде чем я смогу удалить его. Я чувствую себя глупо и извиняюсь за это!

0

используйте ниже код вместо прямого удаления. Активируйте рабочую книгу и рабочий лист.

Microsoft.Office.Interop.Excel.Workbook book = TestBook; 
    book.Activate(); 
    TestWorksheets[WorkSheetCounter].Activate(); 
    TestWorksheets[WorkSheetCounter].Delete();