質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

2回答

6647閲覧

【.net】Excelで改ページプレビューにした際、バックプロセスが残ってしまい困っています。

pon1824

総合スコア6

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2017/06/05 10:22

編集2022/01/12 10:55

初めて質問をさせていただきます。

現在VB.net(Visual Studio 2015)を使用して、ツールの作成を行っています。

その中で.netからExcelを起動し、データの挿入や印刷などの様々な処理を動かしています。
そこで、Excelがタスクマネージャーのバックグラウンドプロセスから消えず、困っています。

※Excelの表示を改ページプレビューにするようになってから上記のようになってしまいました。
それまでは消えていました。

現在動かしているコードとしては、以下のような状態です。


Dim xlApp As Excel.Application = Nothing
Dim xlBooks As Excel.Workbooks = Nothing
Dim xlBook As Excel.Workbook = Nothing
Dim xlSheets As Excel.Sheets = Nothing
Dim xlSheet As Excel.Worksheet = Nothing

Dim xlView As Excel.XlWindowView = Nothing
Dim xlWindow As Excel.Window = Nothing

(処理 略)

'改ページプレビューにする
xlWindow = xlApp.ActiveWindow
xlWindow.View = Excel.XlWindowView.xlPageBreakPreview

(処理 略)

'対象ファイルを保存します。
xlBook.Save()

'COM オブジェクトの参照カウントを解放します。
clsCommon.releaseComObject(xlWindow)
clsCommon.releaseComObject(xlView)
clsCommon.releaseComObject(xlSetup)
clsCommon.releaseComObject(xlSheet)
clsCommon.releaseComObject(xlSheets)
xlBook.Close()
clsCommon.releaseComObject(xlBook)
xlBooks.Close()
clsCommon.releaseComObject(xlBooks)
xlApp.Quit()
clsCommon.releaseComObject(xlApp)


因みに処理の間はExcel非表示の状態にしています。

そして、改ページプレビューにする際、出来れば以下のような形にできたら、とも考えております。

xlWindow.View = Excel.XlWindowView.xlPageBreakPreview

xlWindow.View = xlView.xlPageBreakPreview

開発環境
・Windows10
・Visual Studio 2015(VS Express for Desktop)

いろいろと検索したり、試してみたのですが未だうまく動作できず、1週間ほどが経ってしまっている状態です。
調べ方が悪い等もあるかもしれません。

ご経験等のある方いらっしゃいましたら、ご教示いただけたらと思います。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

途中の処理が分からないので何とも言えませんが
Excelのプロセスが正常に終了しない理由
こことか参考に解放漏れがあるか確認してみてください。

投稿2017/06/08 10:58

YAmaGNZ

総合スコア10222

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pon1824

2017/06/09 07:45

ご回答ありがとうございます。 サイト様ご紹介いただきありがとうございます、いろいろと検索しましたが、調べ方が悪かったのか、初めてみたサイトでした。 こちらを見ながらもう一度試行錯誤してみます。
guest

0

COMオブジェクトをリリースする順番が違っているのではないでしょうか。
破棄されたオブジェクトに対してリリースしようとして例外が発生しているのではないかと思います。xAppをQuit()する前に例外が発生して、アプリを終了できていないのでしょう。

xlViewがどう使用されているかコードがないので判りませんが、

Visual

1 2'対象ファイルを保存します。 3xlBook.Save() 4 5'COM オブジェクトの参照カウントを解放します。 6clsCommon.releaseComObject(xlView) 7clsCommon.releaseComObject(xlWindow) ←xlViewとリリース順序いれかえ

としてみてはどうでしょうか?

投稿2017/06/05 12:54

KoichiSugiyama

総合スコア3041

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pon1824

2017/06/08 10:28

遅くなりまして申し訳ありません。 ご回答ありがとうございます。 xlViewですが、出来れば使って実装したい、と思っているため定義してありますが、 現在xlViewは定義しているのみで使用はしていない状態です。 ご提案頂いた方法ですが、試してみたところ、 同じように、バックプロセスは残ってしまいました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問