2013-07-11 2 views
0

내가 통합 문서를 열고 한 시트 유지하기 위해 다음과 같은 코드가 있습니다엑셀 상호 운용성 예외 0x8002000B

//Get a new workbook. 
oWB = app.Workbooks.Add(Missing.Value); 

int len = oWB.Sheets.Count; 

for (int i = 1; i < len; i++) 
{ 
    ((Worksheet)oWB.Sheets[i]).Delete(); 
} 

oSheet = (Microsoft.Office.Interop.Excel.Worksheet)oWB.ActiveSheet; 

이 코드는 많은 클라이언트 구성에 많은 년간 근무했습니다.

어떤 이유

, 나는 (히브리어) 엑셀 2013과 의상을 가지고 있고, 자신의 컴퓨터에서 나는 다음과 같은 예외가 얻을 : 나는 상황을 이해한다면

System.Runtime.InteropServices.COMException (0x8002000B): Invalid index. (Exception from HRESULT: 0x8002000B (DISP_E_BADINDEX)) 
    at Microsoft.Office.Interop.Excel.Sheets.get__Default(Object Index) 
    at IOSIGHT.Win.ActiveReports.ExcelHelper.StartExcel() 

, 그것은 것을 그 어떤 이유에 대한 통합 문서에 시트가 없으므로 이므로 oWb.ActiveSheet에 대한 호출보다 예외가 발생합니다. 이 문제의 원인은 무엇입니까?

예, 동일한 예외가있는 다른 게시물을 보았지만 코드가 시나리오와 일치하지 않습니다. 더 이상 존재하지 않는 인덱스를 제거하지 않는 뒤쪽 있도록을 yor의 도움을

감사합니다, 오메르

답변

3

루프.

예 : for (int i = len; i > 1; i--) ...

+0

네, 어리석은 실수. 많은 감사합니다. –

+0

+1 - 아마'len-1'과'i> = 1' 이겠지만 올바른 생각은 – SwDevMan81

+0

입니다. 기본 통합 문서에 4 개 미만의 워크 시트가있는 한 버그는 해를 끼치 지 않기 때문에 코드가 잘 작동합니다. .. –