
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も見ています
-
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
【Excel VBA】マクロでExcel自体を終了させたい
Excel(エクセル)
-
バックグラウンドのプロセスのエクセルを閉じる方法
Visual Basic(VBA)
-
-
4
エクセルでファイルを閉じても空ウィンドウが残ります
Excel(エクセル)
-
5
VBAで、強制保存してブックを閉じるには?
Visual Basic(VBA)
-
6
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
7
エクセル2013VBAでThisWorkbook.Close実行後残ったブックが停止する
Excel(エクセル)
-
8
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
-
9
エクセルを閉じた時、ノッペラボウの画面が残ることがありますが、なぜでしょうか?
Excel(エクセル)
-
10
excelでVBA実行後に画面に残るゴミを無くしたい。
Excel(エクセル)
-
11
Excelのプロセスが消えません
Excel(エクセル)
-
12
エクセルのマクロで保存して終了が出来ない
Access(アクセス)
-
13
アクセスVBAで既に開いているエクセルを閉じたい
Yahoo!ショッピング
-
14
VBAのWindowオブジェクトとWorkbookオブジェクトの違い
Visual Basic(VBA)
-
15
Access VBAから使用したExcelプロセスを閉じる方法について
Visual Basic(VBA)
-
16
vba クリップボードクリアについて教えてください
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
0歳児の指しゃぶりに関して
-
PDFファイルから別ウィンドウで...
-
Androidの関数が呼び出されるタ...
-
FEM解析の読み方は?
-
Excel : OpenTextメソッドが正...
-
【sendkeysメソッドが動かずに...
-
ODBCでMoveNextがうまく動作し...
-
c#でVBのcall的役割を果たすコ...
-
C#SundPlayerで同期再生が再生...
-
C#でtrimができません
-
VB.netで、シリアル通信のタイ...
-
「初心者です」-Xlint: depreca...
-
final修飾子を使っているのに、...
-
Labelコントロールに数字を代入...
-
CALLされていないメソッドを見...
-
javascriptからjavaを呼び出したい
-
InetAddress#getHostNameについ...
-
VB6と2008、SQL使用方法の違い...
-
エクセルVBAで、ユーザーフォー...
-
C#で右からnカラム目に文字を挿...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
JSPで<SELECT>の中にDBから持っ...
-
javascriptからjavaを呼び出したい
-
DataGridViewでセルクリックイ...
-
配列のメソッド
-
final修飾子を使っているのに、...
-
VBPをダブルクリックするとたま...
-
boolean型のフィールドとゲッタ...
-
エクセルVBAにおけるON TIMEメ...
-
0歳児の指しゃぶりに関して
-
mainメソッドのthrows節で設定...
-
VBA コピーが出来ません…!
-
CALLされていないメソッドを見...
-
PDFファイルから別ウィンドウで...
-
eclipse-Tomcatでのデバッグに...
-
【sendkeysメソッドが動かずに...
-
コマンドプロンプト実行後に画...
-
Labelコントロールに数字を代入...
-
ウィンドウを最前面にできません
-
エラーの意味を
おすすめ情報