• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:アプリケーションも閉じたいのですが)

Excel VBAでアプリケーションを閉じる方法

このQ&Aのポイント
  • Excel VBAのWorkbook_BeforeCloseイベントを使用して、アプリケーションを閉じる方法を解説します。
  • ブック(ファイル)だけでなく、アプリケーション自体を閉じるためには、Workbook_BeforeCloseイベント内でApplication.Quitメソッドを使用します。
  • しかし、Workbook_BeforeCloseイベントがないファイルの場合、アプリケーションを閉じるボタンを押しても全て終了できます。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

こんばんは。 この現象は、ずいぶん前から関わっています。 私の話は、ここでは該当しないかもしれませんが、少し加えておきます。 ActiveWorkbook.Close SaveChanges:=True   は、#3さんご指摘のように、 ThisWorkbook.Close SaveChanges:=True でしょう。 もしくは、 最初に、一旦保存した後に、 For Each w In Workbooks  If Not w Is Thisworkbook Then   w.Close False  End if Next w Thisworkbook.Close False Application.Quit '←これを、Thisworkbook.Close の前に置くこともアリ 私の場合と同じだとは言いませんが、Excel 2007/ 2003で、いろいろ試していましたが、未だ、こちらは解決していません。そんなに単純ではないかもしれません。 http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_800_060.html 井上さんが、ここでお書きになっています。彼のサンプルも試してみましたが、うまく行っていません。 井上さんも書いていますが、#2さんの方法は、昔から知られています。Quitメソッドは、Application に予約する、というのですが、そうは行っていません。私の場合は、シートの部分はなくなって、フレームが残ってしまいます。正確には、本体(Application) と、ADDINが残ってしまいます。この問題は、何年も解決はしていません。

qwert123da
質問者

お礼

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

その他の回答 (3)

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.3

>Private Sub Workbook_BeforeClose(Cancel As Boolean) > ActiveWorkbook.Close SaveChanges:=True > Application.Quit >End Sub >アプリケーションは開いたままです。 Application.Quitか実行される前にActiveWorkbook.Close してるんだから当然では 試してみて Private Sub Workbook_BeforeClose(Cancel As Boolean)   ThisWorkbook.Save   Application.Quit End Sub

qwert123da
質問者

お礼

ActiveWorkbook.Close SaveChanges:=True ではなく、ThisWorkbook.Saveにすればいいのですね。 理由も教えてくれてありがとうございました。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

こんばんは。 Private Sub Workbook_BeforeClose(Cancel As Boolean) Application.Quit ActiveWorkbook.Close SaveChanges:=True End Sub としておくとOKです。もちろん保存も出来てます。

qwert123da
質問者

お礼

ActiveWorkbook.Close SaveChanges:=True Application.Quit を逆にしたらうまくできました! ありがとうございました。

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.1

[ActiveWorkbook.Close SaveChanges:=True]により次のステップが 無効になっています。 Sub ボタン1_Click() Application.Quit End Sub

qwert123da
質問者

お礼

ActiveWorkbook.Close SaveChanges:=True をすると、それ以降は無効になるのですか。知りませんでした。 シートのボタンを押してからのイベントなら、 Private Sub CommandButton1_Click() Application.Quit ActiveWorkbook.Close SaveChanges:=True End Sub ですべて保存できますが、 Private Sub Workbook_BeforeClose(Cancel As Boolean) Application.Quit ActiveWorkbook.Close SaveChanges:=True End Sub で、アプリケーションの×ボタンやウインドウの×ボタンを押して閉じようとしても アプリケーションが残ってしまいます。

関連するQ&A