C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: マクロを含んだエクセルファイルの開放時にエラー


(過去ログ 21 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■8804 / inTopicNo.1)  マクロを含んだエクセルファイルの開放時にエラー
  
□投稿者/ きゅー (1回)-(2007/10/10(Wed) 21:23:32)

分類:[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開放時エラー発生

}
}
}
引用返信 編集キー/
■8806 / inTopicNo.2)  Re[1]: マクロを含んだエクセルファイルの開放時にエラー
□投稿者/ 魔界の仮面弁士 (466回)-(2007/10/10(Wed) 21:46:32)
No8804 (きゅー さん) に返信
> マクロを含んだエクセルファイルを開くと、オブジェクトの開放時にエラーが発生します。
その場合、マクロ側に問題があったり、ブック自体が軽微なデータ破損を含んでいる可能性もあるそうです。
今回の場合に当てはまるかどうかはわかりませんけれども。

> 	foreach (Excel.Worksheet sheet in excelSheets)
foreach での列挙はやめて、for での列挙に切り替えた方が安全かも知れません。
http://www.divakk.co.jp/aoyagi/csharp_tips_vssenum.html

引用返信 編集キー/
■8811 / inTopicNo.3)  Re[2]: マクロを含んだエクセルファイルの開放時にエラー
□投稿者/ ぽぴ王子 (269回)-(2007/10/10(Wed) 22:43:33)
…次からは自分で調べてから来てね。
考えることができないなら聞かないでね。
引用返信 編集キー/
■8817 / inTopicNo.4)  Re[3]: マクロを含んだエクセルファイルの開放時にエラー
□投稿者/ 中博俊@管理人 (1回)-(2007/10/10(Wed) 23:48:47)
中博俊@管理人 さんの Web サイト
このコメントは偽物です。
引用返信 編集キー/
■8829 / inTopicNo.5)  Re[2]: マクロを含んだエクセルファイルの開放時にエラー
□投稿者/ きゅー (2回)-(2007/10/11(Thu) 03:21:03)
No8806 (魔界の仮面弁士 さん) に返信

プログラム側ではなく、エクセルファイル側の問題とは考えていませんでした。
もしそのほか、プログラム側で対処可能な方法や、原因についてあれば
引き続きご提示いただきたく思います。

>>foreach→for
参照ページを参考に勉強させてもらいます。
ありがとうございます。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -