Если у меня есть ссылка на Worksheet
, и я закрываю его родительский Workbook
, ссылка не исчезает.Но я не могу понять, как я должен проверить, чтобы убедиться, что эти листы не существуют.Проверка на null
не работает.
Пример:
Workbook book = Globals.ThisAddIn.Application.ActiveWorkbook;
Worksheet sheet = (Worksheet)book.Worksheets[1]; // Get first worksheet
book.Close(); // Close the workbook
bool isNull = sheet == null; // false, worksheet is not null
string name = sheet.Name; // throws a COM Exception
Это исключение, которое я получаю, когда пытаюсь получить доступ к листу:
System.Runtime.InteropServices.COMException was caught
HResult=-2147221080
Message=Exception from HRESULT: 0x800401A8
Source=MyProject
ErrorCode=-2147221080
StackTrace:
at Microsoft.Office.Interop.Excel._Worksheet.get_Name()
at MyCode.test_Click(Object sender, RibbonControlEventArgs e) in c:\MyCode.cs:line 413
InnerException:
Это даже не было бы проблемой, если бы я мог проверить событие удаления книги, но Excel не предоставляет его (что действительно раздражает).
Есть ли какой-нибудь удобный способубедитесь, что я не пользуюсь этими листами?