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

タイトル Re^5:  Subroutineの引数が原因でExcelが開放できなくなります。
投稿日: 2009/09/02(Wed) 14:29
投稿者camputer
 るしぇ様

 どうもありがとうございます!
引数の内、Dim myShape As Excel.Shapeで宣言しているものにつきましては

使い終わる度に、MRComObject(myShape) : myShape = Nothing としております。
MRComObjectについては、http://hanatyan.sakura.ne.jp/dotnet/Excel01.htmのコードを
ずっと使わせていただいています。
  
    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
                    Dim count As Integer = _
                      System.Runtime.InteropServices.Marshal.ReleaseComObject(objCom)
                    Debug.WriteLine(count)
                End If
            End If
        Finally
            objCom = Nothing
        End Try
    End Sub



 他の宣言文
     Dim myBook As Excel.Workbook
        Dim myBooks As Excel.Workbooks = myApp.Workbooks
        Dim xlSheet As Excel.Worksheet
        Dim xlSheets As Excel.Sheets
        Dim MyChartObjects As Excel.ChartObjects
        Dim MyChartObject As Excel.ChartObject
        Dim MyChart As Excel.Chart
等についても、同様にMRComObjectで開放しているつもりですが、サブルーチンの引数にある
他のInteger、String等については開放処理しておりません。
(他のサブルーチンでは開放処理せずともExcel.Exeが無事に消えますので。。。)
 何かお気づきになる点がございましたら、是非ともご指摘いただきたくお願い申し上げます。

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

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