2011-12-05 72 views
2

コピーシート用のC#プログラムを作成します。私はWorkSheet.Copyメソッドを105回まで呼び出すと例外エラー(0x800A03EC)が出ます。 これは私のスニペットコードです:using Microsoft.Office.Interop.Excel;com例外HRESULT:0x800A03EC

private void CreateSheet(string dst_fileName) 
{ 
    object cell1 = "A2"; 

    ApplicationClass app = null; 
    Workbook book = null; 
    Worksheet sheet = null; 
    Worksheet sheet_to_copy = null; 
    int i=0; 

    try 
    { 
     app = new ApplicationClass(); 
     app.Visible = false; 
     app.ScreenUpdating = false; 
     app.DisplayAlerts = false; 

     book = app.Workbooks.Open(dst_fileName, 0, false, 5, "", "", true, 
            XlPlatform.xlWindows, 
            "\t", false, false, 0, true, 1, 0); 

     // Reference to the worksheet 
     sheet_to_copy = (Worksheet)book.Worksheets[1]; 

     for(;i<listViewPrg.Items.Count;i++) 
     { 
      sheet = (Worksheet)book.Worksheets[book.Worksheets.Count]; 
      // Copy the worksheet to the end of the worksheets 
      sheet_to_copy.Copy(Missing.Value, sheet); 
      sheet.Name = "NewSheet(" + book.Worksheets.Count + ")"; 
     } 
     book.SaveAs(dst_fileName, Missing.Value, Missing.Value, Missing.Value, 
        Missing.Value, Missing.Value, XlSaveAsAccessMode.xlNoChange, Missing.Value, 
        Missing.Value, Missing.Value, Missing.Value, Missing.Value); 

    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.ToString()); 
    } 
    finally 
    { 
     QuitExcel(app); 
    } 
} 

私はこれに関する解決策を見つけることができません。誰かが私にこの問題を解決するヒントを与えることができますか? ありがとうございます。

+0

最初に失敗した場合は、もう一度呼び出してください... 105回...使用しているインターフェイスのコンテキストでそのHRESULTを調べましたか? – ssube

答えて

0

恐らくExcelのレジストリエントリが壊れていますか?

なぜエクセルファイルのオープンソースリーダーを使用して、それらを使ってすべてのことをしようとしないのですか?スピードが急上昇すると私はあなたがこれらのエラーを取得しないことを保証します!

関連する問題