- ベストアンサー
Excel VBAでアプリケーションを閉じる方法
- Excel VBAのWorkbook_BeforeCloseイベントを使用して、アプリケーションを閉じる方法を解説します。
- ブック(ファイル)だけでなく、アプリケーション自体を閉じるためには、Workbook_BeforeCloseイベント内でApplication.Quitメソッドを使用します。
- しかし、Workbook_BeforeCloseイベントがないファイルの場合、アプリケーションを閉じるボタンを押しても全て終了できます。
- みんなの回答 (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が残ってしまいます。この問題は、何年も解決はしていません。
その他の回答 (3)
- watabe007
- ベストアンサー率62% (476/760)
>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
お礼
ActiveWorkbook.Close SaveChanges:=True ではなく、ThisWorkbook.Saveにすればいいのですね。 理由も教えてくれてありがとうございました。
- keithin
- ベストアンサー率66% (5278/7941)
こんばんは。 Private Sub Workbook_BeforeClose(Cancel As Boolean) Application.Quit ActiveWorkbook.Close SaveChanges:=True End Sub としておくとOKです。もちろん保存も出来てます。
お礼
ActiveWorkbook.Close SaveChanges:=True Application.Quit を逆にしたらうまくできました! ありがとうございました。
- chayamati
- ベストアンサー率41% (260/624)
[ActiveWorkbook.Close SaveChanges:=True]により次のステップが 無効になっています。 Sub ボタン1_Click() Application.Quit End Sub
お礼
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 で、アプリケーションの×ボタンやウインドウの×ボタンを押して閉じようとしても アプリケーションが残ってしまいます。
お礼
ご回答ありがとうございました。