tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^3: VB2008で、単一のExcel.Shapesオブジェクトの取得方法
投稿日: 2009/09/07(Mon) 15:36
投稿者魔界の仮面弁士
# 開放か解放かという話は、とりあえず横に置いておくとして:

> Dim iShapeMax As Object = myShapes.Count
Shapes.Count は、System.Int32 (Integer)を返します。
Integer は COM オブジェクトでは無い為、解放云々とは無関係ですよ。

そもそも「Integer 型を格納した Object」は、Marshal.ReleaseComObject に
渡すことができません。COM オブジェクト以外を渡すとエラーになりますから。


ループで処理する場合には、
>   For i = 1 To iShapeMax
>     myShape = myShapes.Item(i)
          :
          MRComObject(myShape)  '取得した myShape を破棄する
>   Next
のように実装します。


> 魔界の仮面弁士様から教えていただいた
>>一度 Object 型に受けてから解放という手もありますが、
>>あまり良い方法でもないですね。
> をヒントにやってみました。
そういう意味ではありません。

そこで受け取ろうとしていたオブジェクトは、列挙用の COM オブジェクト
(System.Runtime.InteropServices.ComTypes.IEnumVARIANT に相当)の事です。
.NET で管理されるオブジェクト(今回は Integer 型)を受け取っても、
Excel 解放の手助けとはなりません。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。