
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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Excel(エクセル) Excelのマクロコードについて教えてください。 1 2022/03/27 10:47
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/02/22 08:53
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/20 16:59
- Visual Basic(VBA) VBAコードを張り付け後のエクセルの進め方 2 2023/02/07 18:24
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/02/17 11:59
- Visual Basic(VBA) 数式が消える 1 2023/03/19 16:55
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/06/04 09:39
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
このQ&Aを見た人はこんなQ&Aも見ています
-
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
【Excel VBA】マクロでExcel自体を終了させたい
Excel(エクセル)
-
バックグラウンドのプロセスのエクセルを閉じる方法
Visual Basic(VBA)
-
-
4
エクセルでファイルを閉じても空ウィンドウが残ります
Excel(エクセル)
-
5
エクセルを閉じた時、ノッペラボウの画面が残ることがありますが、なぜでしょうか?
Excel(エクセル)
-
6
エクセル2013VBAでThisWorkbook.Close実行後残ったブックが停止する
Excel(エクセル)
-
7
excelでVBA実行後に画面に残るゴミを無くしたい。
Excel(エクセル)
-
8
VBAで、強制保存してブックを閉じるには?
Visual Basic(VBA)
-
9
Excelプロセスが消えない
Visual Basic(VBA)
-
10
excelのファイルを閉じると空のウインドウが残ってしまう
Excel(エクセル)
-
11
アクセスVBAで既に開いているエクセルを閉じたい
Yahoo!ショッピング
-
12
マクロ実行後に別シートの残像が残り、オブジェクトが見えなくなる
Visual Basic(VBA)
-
13
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
-
14
Access VBAから使用したExcelプロセスを閉じる方法について
Visual Basic(VBA)
-
15
AccessからExcelにエクスポートする時に常に上書きしたい
Excel(エクセル)
-
16
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
17
VBA:ユーザーフォームのマルチページに色を付けたい。
Word(ワード)
-
18
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
19
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
20
エクセルのマクロで保存して終了が出来ない
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
0歳児の指しゃぶりに関して
-
リファクタリング > シグニチャ
-
vbaエクセルマクロ RemoveDupli...
-
エクリプス アウトラインビュ...
-
【sendkeysメソッドが動かずに...
-
カーソルのある行の行番号取得
-
基本的な質問で恐縮なのですが...
-
プリンター設定
-
Eclipseの畳むためのショートカ...
-
クエリ文字列の"?"の後を非表示...
-
要認証のファイルサーバからCSV...
-
Javaの研修についていけない。...
-
実行ファイルに値を渡す方法
-
Access2000 ユーザー名の取得
-
C# iTunes で プレイリスト選択...
-
日本の教育って時間が無い中で...
-
シンボルを解決できません。 ...
-
c#でVBのcall的役割を果たすコ...
-
JAVA入門者
-
javaの }{ の付け方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
DataGridViewでセルクリックイ...
-
【sendkeysメソッドが動かずに...
-
コマンドプロンプト実行後に画...
-
VBA コピーが出来ません…!
-
ウィンドウを最前面にできません
-
JSPで<SELECT>の中にDBから持っ...
-
javascriptからjavaを呼び出したい
-
VBPをダブルクリックするとたま...
-
eclipse-Tomcatでのデバッグに...
-
Application.Wait の参照設定
-
エクセルVBAにおけるON TIMEメ...
-
配列のメソッド
-
エクセルのマクロでプリンタを...
-
final修飾子を使っているのに、...
-
drawStringで文字間隔の調整
-
Excel VBA でExcelを終了したい...
-
worksheets & rows メソッドは...
-
CALLされていないメソッドを見...
-
vbaエクセルマクロ RemoveDupli...
おすすめ情報