C# と VB.NET の質問掲示板
ASP.NET、C++/CLI、Java 何でもどうぞ
C# と VB.NET の入門サイト
COMオブジェクトの解放について
(過去ログ 2 を表示中)
掲示板トップ
C# と VB.NET 入門
新規作成
利用方法/規約
トピック表示
ランキング
記事検索
過去ログ
[トピック内 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
-