0

保護されたワークシートを別のExcelファイルにコピーペーストしようとしましたが、次のようなエラーが発生しました

「無効なインデックスです。(HRESULT からの例外: 0x8002000B (DISP_E_BADINDEX))」

C# コード:

try
{
    string startPath = System.IO.Path.GetDirectoryName(
        System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName);
    string filePath = System.IO.Path.Combine(startPath, strPath);

    wBook = xCel.Workbooks.Open(filePath);
    wSheet = (Excel.Worksheet)wBook.Worksheets.get_Item(1);
    wSheet.Copy(Type.Missing, Type.Missing);
    wSheet = (Excel.Worksheet)xlApp.Workbooks[0].ActiveSheet;
    //wSheet = (Excel.Worksheet)xlApp.Workbooks[1].Sheets[1];
}
finally
{
    if (wBook != null)
    {
        wBook.Close();
    }
    if (xlApp != null)
    {
        xlApp.Quit();
    }                
}

誰かが私がここで何をしているのか教えてもらえますか???

また

これを行うためのより良い方法があれば教えてください??

ありがとう。

4

1 に答える 1

2

私はチェックします:

wSheet = (Excel.Worksheet)wBook.Worksheets.get_Item(1);

また

wSheet = (Excel.Worksheet)xlApp.Workbooks[0].ActiveSheet;

あなたのエラーは、wBook または xlApp に値が含まれていないことを示唆しているようです。これが、インデックスが無効になる理由です (むしろ、ワークブックまたはワークシートは空だと思います)。

それが保護されたワークシートである場合、その保護されているという事実がコピーを止めるのではないでしょうか?

于 2013-03-08T12:00:58.613 に答える