タイトル | : Excelプロセスの終了処理 |
記事No | : 4361 |
投稿日 | : 2006/10/01(Sun) 16:42 |
投稿者 | : Jinks |
はじめまして<(_ _)> Jinksといいます。
このサイトは良く使用させてもらってます。<(_ _)> VB.NETでどうしても解らないところが出ましたので質問します。
Excelプロセスが終了しなくて、 このサイトにある例を参考にプログラムを組みなおしたのですが、 どうしてもExcelフォントを「Bold」にするプログラムを組むとプロセスが残ってしまします。
<ソース>(一部を抜粋してます。) Sub ExcelPrint() Dim xlApp As Microsoft.Office.Interop.Excel.Application Dim xlBooks As Microsoft.Office.Interop.Excel.Workbooks Dim xlBook As Microsoft.Office.Interop.Excel.Workbook Dim xlSheets As Microsoft.Office.Interop.Excel.Sheets Dim xlSheet As Microsoft.Office.Interop.Excel.Worksheet Dim xlCells As Microsoft.Office.Interop.Excel.Range Dim xlRange As Microsoft.Office.Interop.Excel.Range
xlApp = New Microsoft.Office.Interop.Excel.Application xlBooks = xlApp.Workbooks xlBook = xlBooks.Open("D:\Excel.xls") xlSheets = xlBook.Worksheets xlSheet = xlSheets.Item("印字シート") xlCells = xlSheet.Cells
xlRange = xlCells(1, 1) xlRange.Font.Bold = True Call AppNothing_SW(xlRange)
Call AppNothing_SW(xlCells) Call AppNothing_SW(xlSheet) Call AppNothing_SW(xlSheets) xlBook.Close(False) Call AppNothing_SW(xlBook) Call AppNothing_SW(xlBooks) xlApp.Quit() Call AppNothing_SW(xlApp) End Sub
Sub AppNothing_SW(ByRef objCom As Object) Dim I As Integer
Try If Not objCom Is Nothing AndAlso System.Runtime.InteropServices. _ Marshal.IsComObject(objCom) Then Do I = System.Runtime.InteropServices.Marshal.ReleaseComObject(objCom) Loop Until I <= 0 End If Catch Finally objCom = Nothing End Try End Sub
パソコン環境は OS:WinXP VBVar:VB.NET2003 Excel:Office2003 です。
ちなみに、「xlRange.Font.Bold = True」をコメントアウトすると、 正常にExcelプロセスは終了します。 わかる方お願いします。<(_ _)>
|