C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ツリー一括表示

Excel印刷時にプロセスが残ってしまう /ペコ犬 (19/07/05(Fri) 15:11) #91552
Re[1]: Excel印刷時にプロセスが残ってしまう /Hongliang (19/07/05(Fri) 15:26) #91553
  └ Re[2]: Excel印刷時にプロセスが残ってしまう /ペコ犬 (19/07/05(Fri) 15:42) #91555 解決済み


親記事 / ▼[ 91553 ]
■91552 / 親階層)  Excel印刷時にプロセスが残ってしまう
□投稿者/ ペコ犬 (11回)-(2019/07/05(Fri) 15:11:20)

分類:[VB.NET/VB2005 以降] 

2019/07/05(Fri) 15:20:43 編集(投稿者)
2019/07/05(Fri) 15:20:13 編集(投稿者)
2019/07/05(Fri) 15:18:23 編集(投稿者)

「VB.NET(VS2017)」より、Excelファイルを印刷するプログラムを組んでいますが、
既存のExcelファイルを印刷するとプロセスが残ってしまいます。

以下、ソースを記載します。
自分なりに調べてみて分かったことは、

exWorkbook = exApp.Workbooks.Add("C:\Test.xls")
→ 上記を記載するとプロセスが残ります。

exWorkbook = exWorkbooks.Add
→ 上記を記載するとプロセスが残りません。


---------------------------------------------------------------------------------------
Private ExcelTest()
Dim exlMng As ExcelManager = New ExcelManager
Dim exApp As Excel.Application = Nothing 'Excelオブジェクト
Dim exWorkbooks As Excel.Workbooks = Nothing 'WorkBooksオブジェクト
Dim exWorkbook As Excel.Workbook = Nothing 'WorkBookオブジェクト
Dim exWorkSheets As Excel.Sheets = Nothing 'Worksheetsオブジェクト
Dim exSheet As Excel.Worksheet = Nothing 'Worksheetオブジェクト

exApp = New Excel.Application
exApp.Visible = False '非表示
exWorkbooks = exApp.Workbooks


'↓のコメントを外すとプロセス残りません。
'exWorkbook = exWorkbooks.Add
'↓のコメントを外すとプロセス残ります。
'exWorkbook = exApp.Workbooks.Add("C:\Test.xls")


 exWorkSheets = exWorkbook.Worksheets
'シート参照
exSheet = DirectCast(exWorkSheets.Item(1), Excel.Worksheet)

'xlsファイルを印刷する
exSheet.PrintOut(Preview:=False)
exWorkbook.Saved = True

'アプリケーション終了
exWorkbook.Close()
exApp.Quit()

'Excelオブジェクトの解放
Marshal.ReleaseComObject(exSheet)
exSheet = Nothing
Marshal.ReleaseComObject(exWorkSheets)
exWorkSheets = Nothing
Marshal.ReleaseComObject(exWorkbook)
exWorkbook = Nothing
Marshal.ReleaseComObject(exWorkbooks)
exWorkbooks = Nothing
Marshal.ReleaseComObject(exApp)
exApp = Nothing
End Sub
---------------------------------------------------------------------------------------


プログラムに不備があれば、ご教示ください。

[ □ Tree ] 返信 編集キー/

▲[ 91552 ] / ▼[ 91555 ]
■91553 / 1階層)  Re[1]: Excel印刷時にプロセスが残ってしまう
□投稿者/ Hongliang (836回)-(2019/07/05(Fri) 15:26:45)
> '↓のコメントを外すとプロセス残りません。
> 'exWorkbook = exWorkbooks.Add
> '↓のコメントを外すとプロセス残ります。
> 'exWorkbook = exApp.Workbooks.Add("C:\Test.xls")

上の方は exWorkbooks.
下の方は exApp.Workbooks.
明らかにここが違いますよね。

基本的に、1行にドットが2個以上出てくるとReleaseComObjectしきれなくなります。
[ 親 91552 / □ Tree ] 返信 編集キー/

▲[ 91553 ] / 返信無し
■91555 / 2階層)  Re[2]: Excel印刷時にプロセスが残ってしまう
□投稿者/ ペコ犬 (12回)-(2019/07/05(Fri) 15:42:12)
No91553 (Hongliang さん) に返信

> 基本的に、1行にドットが2個以上出てくるとReleaseComObjectしきれなくなります。

ありがとうございます!
以下のように修正したところ、プロセスは消えました。

exWorkbook = exWorkbooks.Add(fileNm)

解決済み
[ 親 91552 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -