我試圖循環訪問Excel工作簿,並將粘貼值複製到該工作簿中每張工作表的頂部 上。但是當我進入下一張表時,我遇到了一行記憶問題: ws.select(true)。Interop.Excel 0x800A03EC - 內存不足錯誤代碼7
遇到錯誤:
異常來自HRESULT:0x800A03EC: ,當我走在這一點上,關閉工作簿的出卓越拋出: 超出內存(錯誤7)
其他信息:
文件大小3mb,20個選項卡和從olap數據庫TM1讀取的大量數據庫公式。 Microsoft office 2007
我正在運行的代碼如下。有沒有一種更有效的方式來運行它,可以防止內存不足錯誤或者這是不同的?
任何幫助將不勝感激!
#public bool wbCopyValueOnly(string workBook)
{
Workbook wb = excel.ActiveWorkbook;
Worksheet ws;
Range rng;
int WS_Count = wb.Sheets.Count;
for (int i = 0; i < WS_Count; i++)
{
try
{
ws = wb.Sheets[i + 1];
ws.Activate();
ws.Select(true);
//ws.Select(Type.Missing);
//ws.Cells.Select();
ws.UsedRange.Select();
//ws.Cells.Copy();
ws.UsedRange.Copy(Type.Missing);
ws.UsedRange.PasteSpecial(Excel.XlPasteType.xlPasteValues, Excel.XlPasteSpecialOperation.xlPasteSpecialOperationNone, false, false);
// select of range to get around memory issue
excel.Application.CutCopyMode = (Excel.XlCutCopyMode)0;
//rng = ws.get_Range("A1");
//rng.Select();
NAR(ws);
}
catch (System.Runtime.InteropServices.COMException err)
{
cLogging.write(LogLevel.Error, err.Message);
Debug.Print(err.Message);
return false;
}
}
NAR(wb);
return true;
}
private void NAR(object o)
{
try
{
while (System.Runtime.InteropServices.Marshal.ReleaseComObject(o) > 0) ;
}
catch { }
finally
{
o = null;
}
}
你可以嘗試與辦公室2003年和2010年?以及從另一臺電腦? – bonCodigo