タイトル | : Re^2: EXCELが止まらない |
記事No | : 11305 |
投稿日 | : 2014/08/15(Fri) 23:06 |
投稿者 | : かっちゃん |
> > xlsInbook = xlsInBooks.Open(“ABC.xls”) > 「"」ですよね実際は。 > 「”」では無く。 > > > > ** DimB=A.SpecialCells(Microsoft.Office.Interop.Excel.XlCellType.xlCellTypeLastCell) > 「Dim B」ですよね実際は。 > > > **' B.Row から最終行を確認しています > その部分のコードも見せてください。 > > > エクセルを終了する > 解放処理(Marshal.ReleaseComObject メソッド)の呼び出しは何処に? > http://hanatyan.sakura.ne.jp/vb2005/vb2005excel01.htm
すみません ロジックを分かりやすいように簡略したつもりでしたが、 実際のロジックに直してみます
WINDOWS7でVB2010よりEXCEL2010を使っております ** VB2010の構文 **
エクセルシートはDの直下にABC.xlsで保存されています
Dim wkintLastSu As Integer ' エクセル件数 Call WinkOBJ.SetInXls(0, 0, "D:\", "ABC", "sheet1", 0, 0, 0, 0, "", "") wkintLastSu = WinkOBJ.NI Imports XL = Microsoft.Office.Interop.Excel エクセルワークエリア Private xlsInApp As XL.Application Private xlsInBooks As XL.Workbooks Private xlsInbook As XL.Workbook Private xlsInSheets As XL.Sheets Private xlsInSheet As XL.Worksheet
Public Sub SetInXls(ByVal Flag As Byte, ByVal SubFl As Byte, ByVal FrmItem As String, ByVal strItem As String, ByVal SubstrIm As String, ByVal bytItem As Byte, ByVal shoItem As Short, ByVal intItem As Integer, ByVal lngItem As Long, ByVal TblX As String, ByVal TblY As String) ' Excel起動 xlsInApp = New XL.Application ' 既存のエクセルシート使用 xlsInBooks = xlsInApp.Workbooks xlsInbook = xlsInBooks.Open(Trim(FrmItem) & Trim(strItem) & ".xls") xlsInSheets = xlsInbook.Worksheets xlsInSheet = xlsInSheets(Trim(SubstrIm)) ' シート解放 MRComObject(xlsInSheet) 'xlsSheet の解放 MRComObject(xlsInSheets) 'xlsSheets の解放 ' エクセルを保存せず終了する xlsInbook.Close(False) ' ブック解放 MRComObject(xlsInbook) 'xlsBook の解放 MRComObject(xlsInBooks) 'xlsBooks の解放
xlsInApp.Quit() 'Excelを閉じる MRComObject(xlsInApp) 'xlsApp を解放 End Sub
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
上記ですとEXCELが終了します。 下記のようにシートの最終行を確認する構文を入れますとEXCELが終了しなくなります ' 既存のエクセルシート使用 xlsInBooks = xlsInApp.Workbooks xlsInbook = xlsInBooks.Open(Trim(FrmItem) & Trim(strItem) & ".xls") xlsInSheets = xlsInbook.Worksheets xlsInSheet = xlsInSheets(Trim(SubstrIm)) '*******シートの最終セルを選択します******* Dim A = xlsInSheet.Cells Dim B = A.SpecialCells(Microsoft.Office.Interop.Excel.XlCellType.xlCellTypeLastCell) '最終行を表示しています wkintItem = B.Row '******************************************
' シート解放 MRComObject(xlsInSheet) 'xlsSheet の解放 MRComObject(xlsInSheets) 'xlsSheets の解放 ' エクセルを保存せず終了する xlsInbook.Close(False) ' ブック解放 MRComObject(xlsInbook) 'xlsBook の解放 MRComObject(xlsInBooks) 'xlsBooks の解放
xlsInApp.Quit() 'Excelを閉じる MRComObject(xlsInApp) 'xlsApp を解放
すみません よろしくお願いいたします
|