ワークブックを開いてシートを 1 つだけ保持する次のコードがあります。
//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;
このコードは、多くのクライアント構成で長年にわたって機能してきました。
何らかの理由で、Excel 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
例外をスローします。何がこれを引き起こしたのですか?
はい、同じ例外に関する他の投稿を見ましたが、私のコードはシナリオと一致しません。