• 締切済み

VB.NETで起動したExcelの閉じ方について

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

みんなの回答

回答No.2

Excel 側のコマンドボタンで閉じてもプロセス残っちゃいませんか? VB.NET 側でどのように Excel を開いたのか再度質問します。 単純にShell 関数なのか、Com をラップしたクラスで参照して開いているのか。 # 恐らく参照して開いているのだと思いますが んで、VB.NET 側のフォームを閉じるとプロセスも終了しませんか? または http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=27802&forum=7&5 とかのようにしてみるとか。

keitakuna
質問者

お礼

ご回答有難う御座いました。 御紹介いただいたようなプロセスの終了方法については理解していたのですが、Excelの[閉じる]ボタンをクリックした場合のコードの書く場所が解らなかったのです。 説明が下手で申し訳ありませんでした。 試行錯誤の結果なんとか自力で解決することができました。 ありがとうございました。

keitakuna
質問者

補足

再度のご回答ありがとう御座います。 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側の[閉じる]ボタンで閉じた場合にプロセスを開放するコードを書く方法がわからないのです。 よろしくお願いいたします。

回答No.1

ググればいくらでも。 http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=vb.net+excel+%E8%B5%B7%E5%8B%95&num=50 http://jeanne.wankuma.com/tips/excel/execute.html http://jeanne.wankuma.com/tips/programing/releasecom.html というか、終了の仕方を聞くのであれば、どのように開始したのかを書いたほうがいいですよ。

keitakuna
質問者

補足

早速の回答ありがとうございます。 質問仕方が悪かったのかもしれません。 VB.NETで起動したExcelのシートに動的コマンドボタンを貼り付け、そのコマンドボタンをクリックすることにより、Excelを終了するようにしたものです。 ところが、ユーザーが直接Excelの[×]閉じるボタンをクリックすることにより、Excelのプロセスが残ってしまうことが生じたのです。 これを防止する方法(Excelの[×]閉じるボタンクリックしてもプロセスが残らないようにする方法)がわからないのです。 >ググればいくらでも。 http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=vb.net+excel+%E8%B5%B7%E5%8B%95&num=50 http://jeanne.wankuma.com/tips/excel/execute.html http://jeanne.wankuma.com/tips/programing/releasecom.html このサイトは参照済です。他にもいろいろと調べましたがわかりません。 >というか、終了の仕方を聞くのであれば、どのように開始したのかを書いたほうがいいですよ。 開始の方法は、VB.NETでExcelを起動します。

関連するQ&A

  • Excel2003 VB コマンドボタン

    Excel2003 VB コマンドボタン VB初心者です。コマンドボタンをクリックしたら、テキストボックス1に入力してあるコードと一致する値を別シートのデータTBからvlookupで呼び出してテキストボックス2に表示したいのですが、うまくいきません。コードの例を教えていただけると助かります。よろしくお願いします。

  • vb.netでEXCEL起動がうまくできないのですが原因は何が考えられ

    vb.netでEXCEL起動がうまくできないのですが原因は何が考えられるでしょうか? VB.NETでEXCELのファイルを作成し、その後、 System.Diagnostics.Process.Start("C:\Test.xls") でファイルを開こうとすると、Excelのタイトルバー、メニューバー、ステータスバーのみ表示 された状態で、内容が表示されません。(Windowsの背景が表示された状態) この状態でもファイルは正しく保存されています。 以前は開けていたようなのですが、最近は100%開けないようです。 これはメモリ不足が原因なのでしょうか? メモリは確か1G程度しかなかったと思います。 お願いいたします。 OS:WindowsXP SP3 VB:VB.Net2008 Excel:Excel2000

  • VB.NETで起動させたExcelの多重起動を禁止させるには?

    VB.NETで起動させたExcelの多重起動を禁止させるには? [前提条件] VB.NETには、「Excelを起動させるボタン」と「Excelを終了させるボタン」があるとします。 「Excelを起動させるボタン」によって既存のExcelファイルを起動させ、 「Excelを終了させるボタン」によって起動中のExcelファイルを終了させたいと思います。 Excelを起動している最中は、VBとExcelとでデータの受け渡しをします。 [問題・課題] この方法ですと、「Excelを起動させるボタン」を押下するたびに、同じ既存のExcelファイルを多重起動されてしまいます。 ネット上にある参考文献を調べると、ひとつの関数(?)内で アプリケーション open ⇒ データの吸出し  ⇒ アプリケーション close となっていました。 [前提条件]で述べている使い方で、実現可能な方法があれば教えてください。 (参考になりそうなWebアドレスだけでも構いません) 以上、よろしくお願いします。

  • VB6.0でVB上にExcel

    VB上にExcelオブジェクトを貼り付け、特定の条件に当てはまったとき既存のExcelファイルのSheet1を乗せたいという場合は、どうすればいいのでしょうか?

  • VB.NETで起動したEXCELのシートに作成したCommandButtonのコードの記述について

     VB.NETからEXCELを起動し、シートにCommandButtonを作成しました。  このCommandButtonのコードをどこに記述すればいい のかわかりません。  初歩的な質問で申し訳ありませんが、どなた様か、よろしくご教授下さい。

  • VBでエクセルのデータを取り込む方法

    VB2010にエクセル(2003)のデータを取り込みたいのですが、うまくいきません。 どうすればよいのでしょうか。 外部アプリなので、Public Class Form1の前にImports Excel = Microsoft.Office.Interop.Excel と記入、dim xlapp as excel.apllcation dim xlbook as exce.book dim xlsheets as excel.sheets と記入してみますがこの時点でコードエラーとなります。(ネットで調べこのように記述しました) どうすればいいでしょうか。 すみません。vb初心者なので詳しく教えていただくとたすかります。 よろしくお願いします。

  • VBでDOSコマンドを実行し、結果をEXCELシートに貼りたい

    EXCELからVB等を使ってDOSコマンドを実行し、その実行結果を指定したEXCELシートに貼り付けることは出来ますでしょうか?例えば、EXCELシート内に配置したボタンを押すと、DOSコマンド「ipconfig」等が起動され、その出力結果を指定したEXCELシートに貼り付けるという動作をさせたいと考えています。よろしくお願いいたします。

  • VB5.0からExcel97にデータを書き込むとき

    VB5.0からExcel97にデータを書き込んだりする場合、最初にVBのほうで どういう設定をしなければいけないのでしょうか? 参照設定でMicrosoft Excel 8.0 Object Libraryを選択していて 以下の文をVBに設定しています。 Dim ExcelApp As Object Set ExcelApp = CreateObject("Excel.Application") これだけだと、起動したときに"Excel.Application"の部分が 「型が一致しません」でエラーになります。 何か足りない設定があるのでしょうか? 説明がわかりにくいかと思いますが、どうしたらいいかなかなか わかりません。どうぞよろしくお願いします。

  • vb.net2005でexcelを保存ではなく表示する方法。(プロセス

    vb.net2005でexcelを保存ではなく表示する方法。(プロセスを解放することを考慮) 現在、下記URLのような感じでvb.net2005でExcel出力を行なおうとしています。 http://hanatyan.sakura.ne.jp/dotnet/Excel01.htm このURLでは保存しているので問題ないのですが、 今回、保存はせずに画面に表示したいと考えております。 URLのコードのxlBook.Close(False)を消せばよいのでしょうが、 そうするとExcelのプロセスがPCの電源を落とすまで残ってしまいます。 http://homepage1.nifty.com/rucio/main/technique/teq_15.htm 表示のみしたい場合はどのような記述をすればよいのでしょうか?

  • Excelのマクロでコマンドボタンを選択する方法

    Excelのマクロでコマンドボタンを選択する方法 マクロの記述でオブジェクトのコマンドボタンのみを選択するにはどうしたらいいでしょうか? 別のマクロが登録されているボタンを削除するのが目的です。 オブジェクトは他にもテキストや直線などがあり、コマンドボタンのみの特定の仕方がわかりません。 シートも複数あり、コマンドボタンもまちまちな名前がついています。 WinXP Excel2000

専門家に質問してみよう