|
分類:[Microsoft Office 全般]
マクロを含んだエクセルファイルを開くと、オブジェクトの開放時にエラーが発生します。 エラー: アプリケーション エラー : "XXX" の命令が "XXX" のメモリを参照しました。メモリが "read" になることはできませんでした。
言語 C# .NET Framework 2.0 windows 2000(Excel 2000)でエラー発生し、 windows xp (Excel 2000, XP)では発生しません。
原因/対策などわかりましたらご助言お願いいたします。
filePath = _filePath;
this.txtFileName.Text = System.IO.Path.GetFileName(filePath);
Excel.Application excelApp = null;
try { excelApp = new Excel.Application(); excelApp.Visible = false; excelApp.DisplayAlerts = false; excelApp.EnableEvents = false; Excel.Workbooks excelBooks = excelApp.Workbooks; try { Excel.Workbook excelBook = excelBooks.Open(filePath, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); try { Excel.Sheets excelSheets = excelBook.Worksheets;
try { foreach (Excel.Worksheet sheet in excelSheets) { this.cbSheetNames.Items.Add(sheet.Name); System.Runtime.InteropServices.Marshal.ReleaseComObject(sheet); } this.cbSheetNames.SelectedIndex = 0;
} finally { this.releaseCom(excelSheets); } } finally { this.releaseCom(excelBook); } } finally { this.releaseCom(excelBooks); } } catch (Exception exc) { throw new Exception(exc.Message); } finally { this.releaseCom(excelApp); } ////////////// void releaseCom(object obj) { if (obj != null) { try { if (obj.GetType() == typeof(Excel.ApplicationClass)) { ((Excel.ApplicationClass)obj).Quit(); } } finally { System.Runtime.InteropServices.Marshal.ReleaseComObject(obj); //★excelApp開放時エラー発生
} } }
|