タイトル : Re^3: Excel ComObjectの解放 投稿日 : 2014/10/31(Fri) 10:10 投稿者 : 花ちゃん
> > > xlChart = DirectCast(xlCharts(0), Excel.ChartObject) > > これは > > xlChart = DirectCast(xlCharts.Item(1), Excel.ChartObject) > > だとどうでしょう。 > 変更してみたところ > COMException' のハンドルされていない例外が mscorlib.dll で発生しました > HRESULT からの例外:0x800A03EC > となりました。 横から失礼します。 このグラフは、Sheet1(xlSheets("グラフ")) とかの上に書かれているグラフでしょうか? それとも、 Graph1 とかの グラフ用のシート上に書かれているグラフでしょうか? xlSheets("グラフ") 上に書かれているグラフなら xlSheet_g = DirectCast(xlSheets("グラフ"), Excel.Worksheet) xlCharts = DirectCast(xlSheet_g.ChartObjects, Excel.ChartObjects) xlChart = DirectCast(xlCharts.Item(1), Excel.ChartObject) '-------@ xlChart1 = xlChart.Chart でエラーもなくプロセスも解放されました。 但し、私の環境では、xlSheets("Sheet1") に変更し、XlAxisGroup.xlPrimary で試した結果ですが。 その他は、投稿されたコードを使って、起動・終了は、ここのサイトに掲載のコードを使って試して見ました。 (Excel 2013 /Sheet1上に書かれたグラフを使って、) xlChart = DirectCast(xlCharts.Item(1), Excel.ChartObject) でエラーがでるのなら、既存のグラフが 参照できていない等が原因かと xlChart = DirectCast(xlCharts(0), Excel.ChartObject) で試すとエラーはでませんがプロセスが残りました。 グラフの表示・修正部分のコードをコメントにした場合は、プロセスは解放されているのですよね? |