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

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

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

Re[2]: Excel印刷時にプロセスが残ってしまう


(過去ログ 158 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■91552 / inTopicNo.1)  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
---------------------------------------------------------------------------------------


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

引用返信 編集キー/
■91553 / inTopicNo.2)  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しきれなくなります。
引用返信 編集キー/
■91555 / inTopicNo.3)  Re[2]: Excel印刷時にプロセスが残ってしまう
□投稿者/ ペコ犬 (12回)-(2019/07/05(Fri) 15:42:12)
No91553 (Hongliang さん) に返信

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

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

exWorkbook = exWorkbooks.Add(fileNm)

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -