
Excel VBA を使い、下記「Owari」をセットしたボタンを押すと、
開かれているExcelデータ を保存することなく、完全にCloseし、
Excel自体が完全に消えることを目的にしています。
Sub Owari()
Workbooks("ABC.xlsm").Close SaveChanges:=False
Application.Quit
End Sub
ところが、実行すると、確かに ABC.xlsm は消えるのですが、
Excel は残ったままです。
Excel が完全に消えて Windows のメイン画面にしたいのですが、
どこが間違いなのでしょうか。
No.3ベストアンサー
- 回答日時:
解答は既に出ていますが、この件は、かなり前から知っている割には、そういう現象だというしか認識ありませんでした。
だから、Close と Quit の順番を逆にするということだけで、終わらせていました。Excel2003ぐらいまでは、こんな問題は、クローズアップされることがありませんでしたから。
今まで、2003のコードでは順調に終了できていたものが、2007以降ではできないので、気がついたからです。何か違いがあるのかもしれません。
#2さんのモーグのサンプルコードのように、あくまでも、Closeメソッドを発生させないで、Saveでつないでいき、最後に、Application.Quit と入れる方法は、Microsoft 推奨のようです。
'//
Sub myQuit_TEST()
Dim wb As Workbook
For Each wb In Workbooks
If Not (wb Is ThisWorkbook) Then
If wb.Saved = False Then wb.Save '保存
wb.Close False
End If
Next
'自ブックの保存します
If ThisWorkbook.Saved = False Then ThisWorkbook.Save
Application.Quit
End Sub
'///
Closeメソッドで、その後のコードがすべてが破棄されるわけではなく、ThisWorkbook モジュール側のBeforeCloseイベントはExcel側で受け取っていますね。
だから、
'ThisWorkbook モジュール
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.Quit
End Sub
このように、最後にQuit を入れてあげても終わることが出来るはずです。
参考にした所は、[Application.Quitの誤解]
http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub0 …
ありがとうございました。書き忘れたので申し訳なかったのですが、Excel は2013で、Windows 7 で動かしています。よくわかりました。助かりました。
No.2
- 回答日時:
既に、No1の方が詳しく説明されています。
別案として
http://www.moug.net/tech/exvba/0150079.html
にある
Sub QuitSamp2()
Application.DisplayAlerts = False '---確認メッセージ非表示
Application.Quit '---Excelを終了します
End Sub
複数のエクセルファイルを開いていても対応しますが
全て、上書き保存はされません。

No.1
- 回答日時:
"Close"と"Quit"の順番ですね。
sub Owari()
Application.Quit
Workbooks("ABC.xlsm").Close SaveChanges:=False
End Sub
"Close"が先だと、後の部分が実行されません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
【教えて!goo ウォッチ 人気記事】風水師直伝!住まいに幸運を呼び込む三つのポイント
記事を読む>>
-
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
【Excel VBA】マクロでExcel自体を終了させたい
Excel(エクセル)
-
エクセルでファイルを閉じても空ウィンドウが残ります
Excel(エクセル)
-
-
4
バックグラウンドのプロセスのエクセルを閉じる方法
Visual Basic(VBA)
-
5
Excelプロセスが消えない
Visual Basic(VBA)
-
6
Excel VBAでブックを閉じる時、複数のブックが開いていると・・・。
Excel(エクセル)
-
7
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
8
Excelのプロセスが消えません
Excel(エクセル)
-
9
Access VBAから使用したExcelプロセスを閉じる方法について
Visual Basic(VBA)
-
10
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
11
ブックをCloseまたはQuitで閉じると他のユーザーフォームが消えてしまう。
Excel(エクセル)
-
12
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
13
UserForm1.Showでエラーになります。
工学
-
14
アクセスVBAで既に開いているエクセルを閉じたい
Yahoo!ショッピング
-
15
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
-
16
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
17
フォームを開くときに、コンボボックスの値を選択(アクセスVBA)
Visual Basic(VBA)
-
18
Excelのセルにユーザー名を表示する方法
Excel(エクセル)
-
19
Excel VBA ListViewサブアイテムの文字色
その他(プログラミング・Web制作)
-
20
エクセルVBA ブックを閉じる前に確認メッセージを表示したい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
javascriptからjavaを呼び出したい
-
JSPで<SELECT>の中にDBから持っ...
-
drawStringで文字間隔の調整
-
VBScriptからストアドプロシー...
-
DataGridViewでセルクリックイ...
-
Labelコントロールに数字を代入...
-
【sendkeysメソッドが動かずに...
-
メソッドをstaticにする、しな...
-
コマンドプロンプト実行後に画...
-
boolean型のフィールドとゲッタ...
-
ウィンドウを最前面にできません
-
final修飾子を使っているのに、...
-
(String args[])というメッソ...
-
onClickで関数呼出し後に、結果...
-
worksheets & rows メソッドは...
-
eclipse-Tomcatでのデバッグに...
-
エクセルのマクロでプリンタを...
-
ヘルパーメソッドとはなんですか?
-
Refreshメソッドの使い方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
onClickで関数呼出し後に、結果...
-
DataGridViewでセルクリックイ...
-
コマンドプロンプト実行後に画...
-
Labelコントロールに数字を代入...
-
JSPで<SELECT>の中にDBから持っ...
-
エクセルVBAにおけるON TIMEメ...
-
mainメソッドのthrows節で設定...
-
【sendkeysメソッドが動かずに...
-
javascriptからjavaを呼び出したい
-
final修飾子を使っているのに、...
-
配列のメソッド
-
Excel VBA でExcelを終了したい...
-
boolean型のフィールドとゲッタ...
-
VBPをダブルクリックするとたま...
-
Refreshメソッドの使い方
-
ウィンドウを最前面にできません
-
VBAでSaveAs使用し、指定してい...
-
メソッドをstaticにする、しな...
-
canvasに描画したものを全て削...
おすすめ情報