タイトル : 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が無事に消えますので。。。) 何かお気づきになる点がございましたら、是非ともご指摘いただきたくお願い申し上げます。 |