2016-10-04 71 views
0

我遇到了一個奇怪的問題,我似乎無法找到解決方案。我試圖刪除包含某個工作表名稱的工作簿中的任何工作表,並且不斷收到此異常:「無法獲取Worksheet類的Delete屬性」我可以在其他地方使用工作表類,但是當我嘗試使用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();