タイトル : Re: エクセルの解放について(解決) 投稿日 : 2016/05/23(Mon) 23:04 投稿者 : もとき
申し訳ございませんでした。 > For Each xlShape In xlSheet.Shapes > lstOutPut.Add(xlShape.Name) > MRComObject(xlShape) > Next でなく、 For Each xlShape In xlShapes lstOutPut.Add(xlShape.Name) MRComObject(xlShape) Next でした。 本当にすみませんでした。 これからは、 もっと注意して投稿いたします。 > いつもお世話になっております。 > 申し訳ございませんが、教えて頂けないでしょうか? > VB2005 エクセル2013を使用しています。 > エクセルのテキストボックス名を取得したいと思います。 > 取得自体は出来たのですが、エクセルが解放されません。 > 「プロセスが正常に終了しない理由」等参考に > させて頂きましたが、知識不足のため、解放できません。 > > 申し訳ございませんが、 > よろしくお願いいたします。 > > > '●エクセルからテキストボックス名を取得 > Public Function fncExcelTextBoxNameSyutoku(ByVal PathName As String) As List(Of String) > Dim lstOutPut As New List(Of String) > Dim xlApp As New Excel.Application > Dim xlBooks As Excel.Workbooks > Dim xlBook As Excel.Workbook > Dim xlSheets As Excel.Sheets > Dim xlSheet As Excel.Worksheet > Dim xlShapes As Excel.Shapes > Dim xlShape As Excel.Shape > > xlBooks = xlApp.Workbooks > xlBook = xlBooks.Open(PathName) > xlSheets = xlBook.Worksheets > xlSheet = DirectCast(xlSheets.Item("Sheet1", Excel.Worksheet) > xlShapes = xlSheet.Shapes > > For Each xlShape In xlSheet.Shapes > lstOutPut.Add(xlShape.Name) > MRComObject(xlShape) > Next > > 'Excelの警告メッセージを表示しない > xlApp.DisplayAlerts = False > > '▼終了処理 > MRComObject(xlShapes) > MRComObject(xlSheet) > MRComObject(xlSheets) 'xlSheets の解放 > xlBook.Close(False) 'xlBook を閉じる > MRComObject(xlBook) 'xlBook の解放 > MRComObject(xlBooks) 'xlBooks の解放 > xlApp.Quit() 'Excelを閉じる > MRComObject(xlApp) 'xlApp を解放 > > fncExcelTextBoxNameSyutoku = lstOutPut > End Function > > '●エクセルの開放 > 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) > End If > End If > Finally > objCom = Nothing > End Try > End Sub |