COMExceptions/HRESULTSの詳細を持つサイト(Microsoft以外の場合でも)が誰でも知っていますか?COMException内訳
私はコピー()関数を使用した後、私のExcelワークブックを保存しようとしたとき、私はこのエラーを受け取っ:
ERROR - Unable to SaveWorkbook()
System.Runtime.InteropServices.COMException (0x800A03EC): Document not saved.
P.S.私は10K +ファイルのタイトなループでこれをやっていますが、ファイルを読むことはうまくいきましたが、それらを保存することは楽しいことではありません。
また、Copy()機能を使用するときに誰かがExcelの出血メモリの問題を抱えていることがわかっています。
ありがとうございます!誰もがさらに明確化する必要がある場合
P.S.S私は
編集1
を教えてくださいここで何が起こっているのです。私はいくつかの変換を実行して、元のシートを更新し、新しいシート(同じワークブック)にアクティブシートをコピーして、いくつかのXLSファイル(実際には10K +)を更新するように求められました。問題は、ワークブックを保存するときに発生します。ここで
は自分のアプリケーションからいくつか抜粋です:
///.... UpdateSpreadsheet() Routine
Microsoft.Office.Interop.Excel.Workbook wb = null;
try
{
wb = ef.GetWorkbook(fileName, false, true);
}
catch (Exception ex)
{
logger.Error(ex.ToString());
}
Microsoft.Office.Interop.Excel.Worksheet ws = null;
try
{
ws = wb.Sheets[Foo.WorksheetName] as Microsoft.Office.Interop.Excel.Worksheet;
}
catch (Exception ex)
{
logger.Error(ex.ToString());
}
bool result = false;
if (ws != null)
result = ef.CopyWorksheet(ws, Foo.WorksheetName);
if (result)
{
//... update the sheet as appropriate
}
try
{
ef.SaveWorkbook(wb, fileName); //eventually this line crashes, it's random, but so far after the 500th file, and I get that COM Exception.
//.. update Foo object to reflect copied worksheet
}
catch (Exception ex)
{
//something happened, we can't save, so close and destroy the workbook
logger.Error("Unable to SaveWorkbook()", ex);
}
finally
{
ef.DestoryWorkbook(wb, fileName);
ef.DestroyWorksheet(ws);
}
//// CopyWorksheet() Method
public bool CopyWorksheet(Worksheet ws, String sourceSheet)
{
try
{
try
{
Worksheet sheet = GetWorksheet(sourceSheet + " (2)");
//I don't think the below is necessary, but I'm paranoid about memory leaks
ExcelTools.OfficeUtil.ReleaseRCM(sheet);
sheet = null;
return false;
}
catch (Exception)
{
ws.Copy(Missing.Value, ws); //this line never errors out
}
return true;
}
catch (Exception)
{
return false;
}
finally
{
ws.Activate();
}
}
/// SaveWorkbook()
public void SaveWorkbook(Workbook wb)
{
if (wb != null)
{
wb.Save();
}
}
さまざまなHRESULTの意味についての文書を要求していますか?それはあなたが求めていることをより明確にするために質問を再提示するのに役立つかもしれません。 – Charlie
http://www.google.com/#hl=en&q=InteropServices+COMException+0x800A03EC+Document+not+saved&aq=f&oq=&aqi=&fp=1mZ_-PL2Zjc –
@Charlie、それは素晴らしいでしょう。また、何が起こっているかについてのいくつかの洞察を与えるツールでもあります。 – Chris