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

タイトル Re^2: EXCELへの印字部分処理に関して
投稿日: 2007/09/28(Fri) 22:18
投稿者魔界の仮面弁士
> >             MRComObject(intCellObjRow)
> >             MRComObject(intCellObjCol)
> これは、解放する必要がないのでは。(単なるLong型の変数なので)

ん? Integer型ですよね? (^^;


ところで。

ここのサイトで紹介されている MRComObject メソッドに、少し手を加えてみました。

これなら、
 MRComObject(xlsRange)
はコンパイルが通りますが、今回のような
 MRComObject(intCellObjRow)
はコンパイルエラーになってくれるので、間違いを見つけやすくなります。


また、元のコードは、引数が ByRef Object だったために、Option Strict On の時に
呼び出しにくかったのですが、このコードではその点も改善されています。



'VB2005/2008 用
''' <summary>
''' COMオブジェクトの参照カウントをデクリメントします。
''' </summary>
''' <typeparam name="T">(省略可能)</typeparam>
''' <param name="objCom">
''' COM オブジェクト持った変数を指定します。
''' このメソッドの呼出し後、この引数の内容は Nothing となります。
''' </param>
''' <param name="force">
''' すべての参照を強制解放する場合はTrue、現在の参照のみを減ずる場合はFalse。
''' </param>
Public Shared Sub MRComObject(Of T As Class)(ByRef objCom As T, Optional ByVal force As Boolean = False)
  If objCom Is Nothing Then
    Return
  End If
  Try
    If System.Runtime.InteropServices.Marshal.IsComObject(objCom) Then
      If force Then
        System.Runtime.InteropServices.Marshal.FinalReleaseComObject(objCom)
      Else
        System.Runtime.InteropServices.Marshal.ReleaseComObject(objCom)
      End If
    End If
  Finally
    objCom = Nothing
  End Try
End Sub

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

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