dポイントプレゼントキャンペーン実施中!

VB.NET(2003)でExce(2003)を起動し、そのシートに動的コマンドボタンを貼り付けました。
このコマンドボタンには、Excelを閉じ、COMオブジェクトの開放を行うコードを記述しています。
これでうまくExcelは閉じることが出来き、Excelのプロセスも残らないのですが、直接Excelの[×]閉じるボタンで閉じるとExcelのプロセスが残ってしまいます。
これを防止するにはどのようにすればよいでしょうか?
どうかよろしく御教示ください。

A 回答 (2件)

Excel 側のコマンドボタンで閉じてもプロセス残っちゃいませんか?



VB.NET 側でどのように Excel を開いたのか再度質問します。
単純にShell 関数なのか、Com をラップしたクラスで参照して開いているのか。
# 恐らく参照して開いているのだと思いますが

んで、VB.NET 側のフォームを閉じるとプロセスも終了しませんか?

または
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.ph …
とかのようにしてみるとか。

この回答への補足

再度のご回答ありがとう御座います。

VB.NETでExcelを開くのはCom をラップしたクラスで参照して開いています。

動的にシートへ貼り付けたコマンドボタンで終了した場合は、完全にプロセスは終了します。
以下のコードで確認済です。

Dim localByName As Process() = Process.GetProcessesByName("Excel")
If localByName.Length > 0 Then
MsgBox.Show("まだ Excel.EXE が " & localByName.Length & " 個 起動しています。", _
MsgBoxStyle.MsgBoxSetForeground)
End If

Excel側の[閉じる]ボタンで閉じるとプロセスが残るのですが、フォームを閉じると御指摘のとおりプロセスは終了します。

Excel側の[閉じる]ボタンで閉じた場合にプロセスを開放するコードを書く方法がわからないのです。

よろしくお願いいたします。

補足日時:2006/02/09 10:23
    • good
    • 1
この回答へのお礼

ご回答有難う御座いました。

御紹介いただいたようなプロセスの終了方法については理解していたのですが、Excelの[閉じる]ボタンをクリックした場合のコードの書く場所が解らなかったのです。

説明が下手で申し訳ありませんでした。

試行錯誤の結果なんとか自力で解決することができました。

ありがとうございました。

お礼日時:2006/02/10 17:01

ググればいくらでも。



http://www.google.com/search?hl=ja&lr=lang_ja&ie …

http://jeanne.wankuma.com/tips/excel/execute.html
http://jeanne.wankuma.com/tips/programing/releas …

というか、終了の仕方を聞くのであれば、どのように開始したのかを書いたほうがいいですよ。

この回答への補足

早速の回答ありがとうございます。
質問仕方が悪かったのかもしれません。

VB.NETで起動したExcelのシートに動的コマンドボタンを貼り付け、そのコマンドボタンをクリックすることにより、Excelを終了するようにしたものです。

ところが、ユーザーが直接Excelの[×]閉じるボタンをクリックすることにより、Excelのプロセスが残ってしまうことが生じたのです。

これを防止する方法(Excelの[×]閉じるボタンクリックしてもプロセスが残らないようにする方法)がわからないのです。

>ググればいくらでも。
http://www.google.com/search?hl=ja&lr=lang_ja&ie …

http://jeanne.wankuma.com/tips/excel/execute.html
http://jeanne.wankuma.com/tips/programing/releas …
このサイトは参照済です。他にもいろいろと調べましたがわかりません。

>というか、終了の仕方を聞くのであれば、どのように開始したのかを書いたほうがいいですよ。

開始の方法は、VB.NETでExcelを起動します。

補足日時:2006/02/06 15:46
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています