如果我參考了Worksheet
,並關閉它的父項Workbook
,則參考文獻不會消失。但我無法弄清楚我應該如何檢查以確保這些表格不存在。檢查null
不起作用。在Excel VSTO中,如何檢查工作表是否屬於已關閉的工作簿?
例子:
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不提供一個(這真的是惱人)。
有沒有一些方便的方法來確保我不使用這些工作表?
這有效,但只有當我碰巧有'Workbook'的時候。我的示例代碼很簡單,但實際上,我有幾個只使用'Worksheet'對象的方法。不過,我會接受你的回答,因爲我最終做了類似的事情。即,我檢查了'Application.Workbooks.Count> 0'。由於我沒有打開任何工作簿時只遇到了這個問題,所以此檢查就足以滿足我的需求。感謝您的輸入。 – 2012-03-08 20:46:16