|
分類:[C#]
C#からExcelを開き、Excelシート内に配置されたオートシェイプを操作すると
終了処理してもタスクマネージャーのプロセスに「Excel.EXE」が残ってしまいます。
切り分けした結果、下に示すコードを実行しなければ、Excelの起動 〜 終了は正常に動作し
プロセスにも「Excel.EXE」は残りません。
(起動 〜 終了)← この流れだと○
(起動 〜 オートシェイプ名変更 〜 終了)← この流れだと×
あと何をどのように解放してやればいいのでしょうか?
(耳が痛い質問内容とは重々承知しており、いろんなサイトを見て回りましたが、
解決に至りませんでした申し訳ございませんが宜しくお願い致します)
#region オートシェイプ名変更/void xlsShpCangeName
static public void xlsShpCangeName(Excel.Worksheet ctrlSheet, string ShapeName, string NewShapeName)
{
Excel.Shape shp = null;
shp = ctrlSheet.Shapes.Item(ShapeName);
// オートシェイプ名変更
shp.Name = NewShapeName;
//インスタンスの解放
Marshal.ReleaseComObject(shp);
shp = null;
}
#endregion // void xlsShpCangeName
【環境】
WinXP_SP3
Microsoft Visual Studio 2010 Version 10.0.30319.1
Excel2003
|