Excelが(シート追加で)実行プロセス解放せず
- 題名: Excelが(シート追加で)実行プロセス解放せず
- 著者: 小島いさお
- 日時: 2005/07/14 13:32:23
- ID: 11791
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: Excelが(シート追加で)実行プロセス解放せず
- 著者: 渋木宏明(ひどり)
- URL: http://hidori.jp/
- 日時: 2005/07/14 14:02:24
- ID: 11794
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: Excelが(シート追加で)実行プロセス解放せず
- 著者: 魔界の仮面弁士
- 日時: 2005/07/14 14:09:15
- ID: 11796
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: Excelが(シート追加で)実行プロセス解放せず
- 著者: 小島いさお
- 日時: 2005/07/14 16:37:28
- ID: 11799
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
実行例-------------------------------------------------------------
Dim xlFilePath As String
Dim xlApp As Excel.Application
Dim xlBooks As Excel.Workbooks
Dim xlBook As Excel.Workbook
Dim xlSheets As Excel.Sheets
Dim xlSheet As Excel.Worksheet
xlApp = New Excel.Application
xlApp.Visible = True
xlBooks = xlApp.Workbooks
xlBook = xlBooks.Open(xlFilePath)
xlSheets = xlBook.Worksheets
xlSheet = xlBook.ActiveSheet
'利用者数分の新規シート追加、ただし定型シートが1ページに存在済み
If max_sheet - 1 > 0 Then
xlSheets.Add(Count:=max_sheet - 1, after:=xlSheets(1))
End If
xlApp.DisplayAlerts = False '更新・上書き問い合わせダイアログ表示しない
xlApp.ActiveWorkbook.SaveAs(xlFilePath) 'ファイル保存
ReleaseCOM(xlSheet)
ReleaseCOM(xlSheets)
xlBook.Close(False)
ReleaseCOM(xlBook)
xlBooks.Close()
ReleaseCOM(xlBooks)
xlApp.Quit()
ReleaseCOM(xlApp)
System.Threading.Thread.Sleep(5000)
'システム終了後もExcel等が終了しない(実行プロセスに残る)…終了させるモジュール
'COMプロセス解放
Public Sub ReleaseCOM(ByVal o As Object)
Try
System.Runtime.InteropServices.Marshal.ReleaseComObject(o)
Catch
Finally
o = Nothing
End Try
End Sub
-------------------------------------------------------------------
質問
xlSheets.Add(Count:=max_sheet - 1, after:=xlSheets(1))
上記例より、xlSheets.Add(〜) を実行して、シート自動追加を
試みると、Excel実行プロセスは解放されず、
xlSheets.Add(〜) を実行しなければ無事解放されます。
シート自動追加のケースで、何か方策ありませんでしょうか。