web-dev-qa-db-ja.com

VBAを使用してExcelアプリケーションを閉じる

成功せずに以下を使用しました。実際、アクティブなブックは閉じますが、Excelウィンドウは開いたままです。

Application.ActiveWindow.Close SaveChanges:=False
ActiveWorkbook.Close SaveChanges:=False

アプリケーションを終了するコマンドはどれですか?

編集

もう少し言うと:ワークブックのOpenイベントでマクロを実行します。そのマクロが終了したら、アプリケーションを終了します。私もこれを試してみましたが成功しませんでした。

Private Sub Workbook_Open()
   Macro_MyJob
   Application.Quit
End Sub

このApplication.Quitコマンドはどこに置くべきですか?

32
Brani

あなたの問題は、アプリケーションを終了するコマンドを送信する前にマクロを呼び出すドキュメントを閉じていることだと思います。

その場合の解決策は、ブックを閉じるコマンドを送信しないことです。代わりに、ワークブックの「保存済み」状態をtrueに設定すると、保存されていない本を閉じることに関するメッセージを回避できます。注:これはワークブックを保存しません。保存されているように見えます。

ThisWorkbook.Saved = True

そして、直後

Application.Quit
51
variant

Save Promptメッセージを回避するには、これらの行を挿入する必要があります

Application.DisplayAlerts = False
ThisWorkbook.Save
Application.DisplayAlerts = True

作業を保存した後、この行を使用してExcelアプリケーションを終了する必要があります

Application.Quit

正しい条件チェックを行わない限り、単にこれらの行をPrivate Sub Workbook_Open()に配置しないでください。そうしないと、Excelファイルが台無しになる可能性があります。

安全のため、実行するモジュールを作成してください。以下は私が置いたコードです:

Sub testSave()
Application.DisplayAlerts = False
ThisWorkbook.Save
Application.DisplayAlerts = True
Application.Quit
End Sub

問題の解決に役立てば幸いです。

8
Leng Keong
Sub TestSave()
Application.Quit
ThisWorkBook.Close SaveChanges = False
End Sub

これは私にとってはうまくいくようですが、保存する前にアプリを終了しているように見えますが、保存されます...

4
kc kalama
Application.Quit 

トリックを行う必要があります。

4
Michael

以下に示すように、動作するように見える特定のシーケンスを試しました。

ThisWorkbook.Saved = True
Application.Quit
Application.ActiveWindow.Close SaveChanges:=False
ActiveWorkbook.Close SaveChanges:=False
1
Dan

試してみることができます

ThisWorkbook.Save
ThisWorkbook.Saved = True
Application.Quit
0
K10

私の場合、アプリケーション全体ではなく1つのExcelウィンドウのみを閉じる必要があったため、保存せずに閉じるウィンドウを正確に指定する必要がありました。

次の行は正常に機能します。

Sub test_t()
  Windows("yourfilename.xlsx").Activate
  ActiveWorkbook.Close SaveChanges:=False
End Sub