ExcelVBAで、クローズボタンの処理

このQ&Aのポイント
  • Excelのクローズボタンを押して終了するときに、上書き保存ダイアログが表示される問題について解決方法を教えてください。
  • 上書き保存ダイアログを表示させずに上書き自体をさせない方法や、Excel本体のクローズボタンを無効にしたり非表示にしたりする方法が知りたいです。
  • 現在はWorkbook_BeforeCloseイベントでApplication.DisplayAlertsをFalseにして試していますが、上手くいきません。他の解決方法があれば教えてください。
回答を見る
  • ベストアンサー

ExcelVBAで、クローズボタンの処理

お世話になります。 通常、アプリ側ではApplication.DisplayAlerts = Falseにして、 ブックの終了などを制御しているのですが、 Excelのクローズボタンを押して終了するときは、この DisplayAlertsが有効にならないらしく、必ず上書き確認の ダイアログが表示されてしまいます。 これを… 1.上書き保存ダイアログを表示させない(上書き自体させない) 2.Excel本体のクローズボタンを無効にする 3.Excel本体のクローズボタンを非表示にする …などのどれかの方法を教えてください。 尚、現在はブックを閉じる直前で、下記のようなコードで 試みていますが、うまくいきません。 Private Sub Workbook_BeforeClose(Cancel As Boolean) Application.DisplayAlerts = False End Sub 以上、宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • nekotaru
  • ベストアンサー率50% (22/44)
回答No.1

エクセルに対し、すでにセーブ済みです、と認識させます。 ActiveWorkbook.Saved = True ActiveWorkbook.Close http://www.officepro.jp/excelvba/book_new/index12.html

参考URL:
http://www.officepro.jp/excelvba/book_new/index12.html
tatapata
質問者

お礼

ありがとうございます! まさか、こんな方法で回避できるとは思いませんでした! 本当にありがとうございました。 また何かありましたら、宜しくお願い致します。

関連するQ&A

  • VBA Auto_Close複数ブックを閉じれない

    Auto_Closeについて教えて下さい。 Auto_Closeで、指定のブックを一緒に閉じる処理を 書きましたが、エクセル自体を終了できません。 Workbook_BeforeCloseでも試しましたが、うまく処理 できません。エクセル本体も終了させたいです。 どのように記述したらよいでしょうか? 宜しくお願い致します。 コード Private Sub Auto_Close() '指定のブックを閉じる(すでにAAAファイルは開いている状態) Application.Windows("AAA.xlsx").Close False Application.Quit End Sub

  • EXCEL2007でワークブックのクローズ処理

    教えてください。 EXCEL2003形式ファイルのVBAに、 Private Sub Workbook_BeforeClose(Cancel As Boolean) ThisWorkbook.Close SaveChanges:=False End Sub を記述してファイルを保存します。(作成は、EXCEL2003で保存します。) (仮にBook1.xlsとします。) このファイル(Book1.xls)をEXCEL2007で開きます。 このとき、別のファイル(仮にBook2.xlsとします。形式は、EXCEL2003です)をEXCEL2007で開きます。 で、Book1.xlsを×ボタンで終了すると、 EXCEL2007が異常終了します。 環境依存でしょうか? PCの環境に、EXCEL2003とEXCEL2007が混在しています。

  • アプリケーションも閉じたいのですが

    ブック(ファイル)だけじゃなくて アプリケーションも閉じたいのですが Private Sub Workbook_BeforeClose(Cancel As Boolean) ActiveWorkbook.Close SaveChanges:=True End Sub としたのですが、実際閉じるのはブックだけでアプリケーションは開いたままです。 「ウインドウを閉じる」を押して、ブックだけが閉じるのはわかるのですが 図のようにアプリケーション閉じるボタンを押してもウインドウ(ブック)しか閉じません。 Private Sub Workbook_BeforeClose(Cancel As Boolean) ActiveWorkbook.Close SaveChanges:=True Application.Quit End Sub にしても結果は同じです。 しかし、Workbook_BeforeCloseイベントがないファイルなら、 アプリケーション閉じるボタンを押しても全て終了できます。 Workbook_BeforeCloseイベントを使っても アプリケーションも閉じる方法を教えてください。

  • フォームのボタンからのみexcelを終了したい

    おねがいします。 都合上、フォームのボタンからだけexcelを終了したのです。 Private Sub CommandButton1_Click() Application.DisplayAlerts=False Application.Quit End Sub それに伴い、 右上のexcelのxボタン、シートのxボタンを無効化または非表示にしたいです。 Private Sub Workbook_BeforeClose(Cancel As Boolean)      If CloseMode = 0 Then     Cancel = 1   End If End Sub これで、エクセルxボタンは無効になりましたが、 フォームからの終了も出来なくなってしまいました。 フォームからのみ終了する方法を教えてください。

  • Excel VBA 終了時の処理

    Excelを終了時にフルスクリーン(リボンなどが非表示の状態)から解除するコードを書きたいのです。 Private Sub Workbook_BeforeClose(Cancel As Boolean) Application.DisplayFullScreen = False 'フルスクリーン化解除 End Sub というコードを書きましたが、Excel自体を×ボタンでクローズした場合は正常に動きますが、 Excelを起動したままPCをシャットダウンすると解除されません。 次回Excelファイルを開くときにはフルスクリーンで出てきてしまいます。 シャットダウン時には、Excelも勝手にクローズされ、その際にマクロが動くものだと思っていましたが... これを回避するコードなどありましたらご教授ください。 環境:windows7 Excel2010 (2013でも動くようにしたいです)

  • (VBA)ブックを閉じるプログラム

    表題の通りで、マクロを使ってブックを閉じるプログラムが作りたいです。 具体的には、 "終了"というボタンを作って、このボタンを押したときのみ変更を保存せずに、ブックを閉じる。 右上のXマークを押して閉じようとした場合は、"終了ボタンで終了して下さい"とメッセージを 表示させて、必ず終了ボタンで閉じる。 のようなプログラムです。 ネットで調べ、みよう見まねでプログラムを組んでみましたが、完全にブックが消えません。 また×ボタンを押した場合にブックを閉じない様にするプログラムが分かりません。 <組んでみたプログラム> Sub test2() Application.DisplayAlerts = False Workbooks("Book1.xls").Close Application.DisplayAlerts = True End Sub ご教授お願い致します。

  • VBAでの疑問

    以下のようなコードを見ました。 Private Sub Workbook_BeforeClose(Cancel As Boolean) With ThisWorkbook Application.DisplayAlerts = False If .Name <> .FullName Then SaveAs Else Me.Saved = True End If Application.DisplayAlerts = True End With End Sub これは何のためのコードでしょうか? If .Name <> .FullName Then って、パスなしのBOOK名とパス付BOOK名が同じじゃないのは当然で、同じになるのは新規に作成したばかりで保存する前のファイルくらいしか思いつきません。これでは必ず上書きされてしまうと思いますが、どういう意図が考えられるのかお分かりの方教えていただけないでしょうか?

  • エクセル・ブック共有のファイル終了時に

    エクセルのVBA、万年初心者のものです。m(__)m エクセルのファイルをネットワーク上で「ブックの共有」で使いたいと思っているのですが、「ブックの共有」をオンにしていると、終了時に毎回「この場所に○○.xlsという名前のファイルが既にあります。置き換えますか?」と出てきます。 ファイル自体はマクロを有効にしていて、毎回、置き換える必要がないので「いいえ」しか選ばないので、なんとか、このメッセージをださないようにしたいのですが。 ThisWorkbook のPrivate Sub Workbook_BeforeClose の中に、Application.DisplayAlerts = False を入れてみたりしましたが、うまくいきません。 なにかいいメソッドがないでしょうか?

  • ExcelVBAのコードで上書き保存

    お世話になります。 ExcelVBAのコードで上書き保存時 「実行時エラー1004 ファイルを保存できません」 となり止ってしまいます。 (自分のPCではエラーも発生せず保存できるのですが 友人のPCでは上記のエラーが発生する状況です) コードはExcel起動時にExcel自体を非表示にし フォームで入力等の処理を行い、上書き保存→Excel終了としています。 Private Sub Workbook_Open() Application.Visible = False 'Excel非表示 userform1.Show End Sub Private Sub CommandButton2_Click() 'userform1 ActiveWorkbook.Save '上書き保存 Application.Quit 'Excel終了 End Sub 何とか解決する方法はないでしょうか? よろしくお願いします。

  • エクセルで保存しますか?のメッセージを表示しない

    皆さんこんにちは 教えてください、読み取り専用でエクセルファイルを開いて閉じるボタンを使って閉じるときに「保存しますか?」のメッセージを出さないで閉じたいのですが、Workbook_BeforeClose イベントに Application.DisplayAlerts = False としてもメッセージは表示されます 読み取り専用で開いているにもかかわらず Application.DisplayAlerts = False ThisWorkbook.Save Application.DisplayAlerts = True とすれば メッセージが表示されずに閉じますが 保存しますか?→いいえ として閉じるよりも時間がかかります 読み取り専用で開いているのに保存されるのでしょうか?同じファイルを再び開くと変更した部分は保存されていません しかし、タイムスタンプは閉じた時間に更新されています これは普通なのでしょうか? この方法以外で保存しますか?のメッセージを出さないで保存しないで閉じる方法はないでしょうか?よろしく御願いします

専門家に質問してみよう