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

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

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

COMオブジェクトの解放について


(過去ログ 2 を表示中)

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

■1641 / inTopicNo.1)  COMオブジェクトの解放について
  
□投稿者/ 里中由紀菜 一等兵(5回)-(2005/10/20(Thu) 12:53:40)

分類:[C#] 


分類:[C#] 

前回助言を下さった皆様、どうもありがとうございました。
おかげさまで、ExcelCOMを利用してExcelを作成することができるように
なりました。

今回はこちらのTipsにも紹介されている、COMオブジェクトの解放なんですが。
エクセルのシートに10×10の表を作り(1,1)から(10,10)までの各セルに
値を入れていく場合、全てのセルに対してオブジェクトの解放を行わなくては
ならないのでしょうか?

もしそうである場合、今作っているものをちょっと根本から考え直さないと
まずい状態なんです。理解不足でごめんなさい。よろしくお願いします。


0
引用返信 編集キー/
■1643 / inTopicNo.2)  Re[1]: COMオブジェクトの解放について
□投稿者/ まどか 准尉(28回)-(2005/10/20(Thu) 14:40:08)

分類:[C#] 

> 今回はこちらのTipsにも紹介されている、COMオブジェクトの解放なんですが。
> エクセルのシートに10×10の表を作り(1,1)から(10,10)までの各セルに
> 値を入れていく場合、全てのセルに対してオブジェクトの解放を行わなくては
> ならないのでしょうか?

解放は参照と対ですので横着はできません。

ステップが多すぎるという話であれば、
Dim objBuf(,) As Object
Redim objBuf(9,9) '(行,列)
objBuf(0,0) = "'ABC"
・・・・・
objSheet.Range("C2:L11").Value = objBuf
というやり方ができます。
#そういうことではなく?


0
引用返信 編集キー/
■1654 / inTopicNo.3)  Re[2]: COMオブジェクトの解放について
□投稿者/ 里中由紀菜 一等兵(7回)-(2005/10/21(Fri) 09:27:55)

分類:[C#] 

返信が遅くなりまして申し訳ありません。

ステップを簡略化する方法、ありがとうございます^^
参考にしてやってみます。


0
引用返信 編集キー/
■1703 / inTopicNo.4)  一応、補足
□投稿者/ 魔界の仮面弁士 少尉(33回)-(2005/10/24(Mon) 16:44:12)

分類:[C#] 

2005/10/24(Mon) 16:45:22 編集(投稿者)

> objSheet.Range("C2:L11").Value = objBuf
> というやり方ができます。

配列をつかって、一括代入するという点は良いとして。

Rangeメソッドが返す値もCOMクラスである可能性が高いので、こうかな?
# 未検証。

// C# or JScript
x = objSheet.Range("C2:L11");
x.Value = objBuf;
if(Marshal.IsComObject(x)) {
Marshal.ReleaseComObject(x);
}


'' Visual Basic
x = objSheet.Range("C2:L11")
x.Value = objBuf
If Marshal.IsComObject(x) Then
Marshal.ReleaseComObject(x)
End If

0
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -