Excelの解放
- 題名: Excelの解放
- 著者: KAN
- 日時: 2007/12/01 20:21:55
- ID: 21069
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: Excelの解放
- 著者: じゃんぬねっと
- 日時: 2007/12/02 17:37:54
- ID: 21073
- この記事の返信元:
-
[21069] Excelの解放 KAN 2007/12/01 20:21:55
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: Excelの解放
- 著者: KAN
- 日時: 2007/12/03 10:40:09
- ID: 21079
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[4]: Excelの解放
- 著者: るしぇ
- 日時: 2007/12/03 21:43:38
- ID: 21084
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[6]: Excelの解放
- 著者: KAN
- 日時: 2007/12/04 10:51:11
- ID: 21087
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
初めまして。VS2005 C#で記述しています。
下記の様に単純にエクセルのインスタンスを作成して、閉じるサンプルを
作ったのですが、エクセルが解放されずに残ってしまいます。
記述に不味い点がありますでしょうか。
終了時点では、オブジェクト型としてはリソースが残っていない様ですので
System.Runtime.InteropServices.Marshal.ReleaseComObjectは使用していません。
string Terget = System.IO.Path.GetTempPath() + "prt.xls";
Type ExcelPrgID = Type.GetTypeFromProgID("Excel.Application");
if (ExcelPrgID == null) return;
object objXL = Activator.CreateInstance(ExcelPrgID);
object objBook = objXL.GetType().InvokeMember("Workbooks", System.Reflection.BindingFlags.GetProperty, null, objXL, null);
objBook = objBook.GetType().InvokeMember("Open", System.Reflection.BindingFlags.InvokeMethod, null, objBook, new object[] { Terget });
objBook = objBook.GetType().InvokeMember("Close", System.Reflection.BindingFlags.InvokeMethod, null, objBook, null);
objXL = objXL.GetType().InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, objXL, null);