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も見ています
-
風水の観点で選ぶ観葉植物とは?置き場所や上げたい運気ごとの注意点を紹介!
観葉植物で運気をアップするコツを、風水デザイン1級建築士の福島昌彦さんに伺った。
-
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
【Excel VBA】マクロでExcel自体を終了させたい
Excel(エクセル)
-
バックグラウンドのプロセスのエクセルを閉じる方法
Visual Basic(VBA)
-
-
4
エクセルでファイルを閉じても空ウィンドウが残ります
Excel(エクセル)
-
5
Access VBAから使用したExcelプロセスを閉じる方法について
Visual Basic(VBA)
-
6
ブックをCloseまたはQuitで閉じると他のユーザーフォームが消えてしまう。
Excel(エクセル)
-
7
Excel VBAでブックを閉じる時、複数のブックが開いていると・・・。
Excel(エクセル)
-
8
メッセージボックスを前面に表示させるには?
Visual Basic(VBA)
-
9
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
10
エクセル2013VBAでThisWorkbook.Close実行後残ったブックが停止する
Excel(エクセル)
-
11
エクセルVBA ブックを閉じる前に確認メッセージを表示したい
Excel(エクセル)
-
12
Excelプロセスが消えない
Visual Basic(VBA)
-
13
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
14
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
15
エクセルマクロで、別のブックが開いているかを判定したいのですが。
その他(Microsoft Office)
-
16
メッセージボックスに表示する文字を大きくしたい
Excel(エクセル)
-
17
アクセスVBAで既に開いているエクセルを閉じたい
Yahoo!ショッピング
-
18
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
19
指定のWORKBOOKを前面表示する方法(エクセル:VBA)
Excel(エクセル)
-
20
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
onClickで関数呼出し後に、結果...
-
mainメソッドのthrows節で設定...
-
ODBCでMoveNextがうまく動作し...
-
final修飾子を使っているのに、...
-
DataGridViewでセルクリックイ...
-
Labelコントロールに数字を代入...
-
エクセルVBAにおけるON TIMEメ...
-
drawStringで文字間隔の調整
-
eclipse-Tomcatでのデバッグに...
-
ActivateMicrosoftAppメソッドは
-
誰か助けて下さい。UnityのC#で...
-
worksheets & rows メソッドは...
-
javascriptからjavaを呼び出したい
-
サーブレット GETからPOST送信
-
ディレクトリの階層構造をツリ...
-
エクセルのvbaによる書式のコピ...
-
DataGridViewの行追加について。
-
「CA2202: オブジェクトを複数...
-
Range クラスのAutoFitプロパテ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
Labelコントロールに数字を代入...
-
final修飾子を使っているのに、...
-
エクセルVBAにおけるON TIMEメ...
-
コマンドプロンプト実行後に画...
-
mainメソッドのthrows節で設定...
-
DataGridViewでセルクリックイ...
-
javascriptからjavaを呼び出したい
-
VBPをダブルクリックするとたま...
-
onClickで関数呼出し後に、結果...
-
ExcelのxlDialogInsertPictureで。
-
Refreshメソッドの使い方
-
JSPで<SELECT>の中にDBから持っ...
-
【sendkeysメソッドが動かずに...
-
ウィンドウを最前面にできません
-
(String args[])というメッソ...
-
C# 演算 最大値 最小値 表現の仕方
-
Excel VBA シェイプの原型のサ...
-
VB.netで、シリアル通信のタイ...
-
Excel VBA でExcelを終了したい...
おすすめ情報