Excel VBA 終了時の処理について

このQ&Aのポイント
  • Excelを終了時にフルスクリーン(リボンなどが非表示の状態)から解除するコードを書きたい。
  • Excelの×ボタンでクローズした場合は正常に動きますが、PCをシャットダウンすると解除されない。
  • シャットダウン時には、Excelも勝手にクローズされ、その際にマクロが動くものだと思っていた。
回答を見る
  • ベストアンサー

Excel VBA 終了時の処理

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

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

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.3

ANo.2です。 考えすぎました。 個人用マクロブック(Personal.xlsb)に以下のマクロを仕込んでおけば、たとえ最大化のまま終了されても起動時に標準状態になります。 これで十分ではないでしょうか。 Sub Auto_Open()   Application.WindowState = xlNormal End Sub

その他の回答 (2)

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

PCシャットダウン時は終了イベントは発生しなかったように思えます。 グループ・ポリシーを使ってみては? [スタート]-[ファイル名を指定して実行]で“gpedit.msc”と入力して起動するグループポリシーオブジェクトエディタで、 [コンピュータの構成]-[Windowsの設定]-[スクリプト(スタートアップ/シャットダウン)]-[シャットダウン] と、展開した先でPCシャットダウン時に起動させたいバッチファイルやexeを登録できます。 ここで、フルスクリーン解除して終了するExcelマクロをシャットダウン時に起動するように登録しては如何でしょう。

回答No.1

標準モジュールの Auto_Open か ワークブックモジュールの Workbook_Open に Application.DisplayFullScreen = False または Application.WindowState = xlNormal を記述されたらいかがでしょうか。

vaki1031
質問者

補足

すいません、言葉が足りなかったです。 今回作成しているマクロ入りのExcelファイルは (1)ファイルを開くと同時にフルスクリーンになる (2)ファイルを閉じるとフルスクリーン解除して終了 というコードが書いてあります。 これは、別のファイルを開いたときにもExcelがフルスクリーンモードにならないようにしたいからですが、 通常通り閉じた場合は成功しますけども、マクロ入りファイルを開いたままPCをシャットダウンすると、 別のファイルでもフルスクリーンの状態で立ち上がります。 別のファイルを開いたときにも、Excelがフルスクリーンのモードで立ち上がってしまうことを防ぎたいのです。

関連するQ&A

  • VBAの「This Workbook」について

    VBAの「This Workbook」にコードを書くことについて教えて下さい。 ここにコードを書きと、例えばどんな便利な機能があるのでしょうか? よろしくお願いします。 私は下記の意味はだいだいわかります。 Private Sub Workbook_BeforeClose(Cancel As Boolean) Private Sub Workbook_Open()

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

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

  • VBAでファイルを閉じる時に、他のエクセルファイルを閉じるには?

    VBAで、 Private Sub Workbook_Open() Workbooks.Open FileName:="バス時刻表.xls",ReadOnly:=True End Sub で、バス時刻表.xlsを自動的にオープンした後、 閉じる時に、 Private Sub Workbook_BeforeClose(Cancel As Boolean) Workbooks("バス時刻表.xls").Close 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が混在しています。

  • VBAのOnTimeの停止について

    下記コードで右上の×ボタン(エクセルアプリではなくbookを閉じる×です)でCLOSEした場合は停止されるのですが、 ThisWorkbook.Closeで閉じた場合MsgBox "timer cxl"は呼ばれるのですがタイマーがキャンセルできず10秒後に閉じたbookが勝手に開かれMsgBox "chk"が呼ばれてしまいます。 エクセルは2003、WIN10です。 どなたか何か原因や回避策があればご教授お願い致します。 //標準モジュール Public timer As Date Public timerFlag As Boolean Sub chk() timerFlag = False MsgBox "chk" End Sub //ThisWorkbook Private Sub Workbook_Open() timer = Now + TimeValue("00:00:10") timerFlag = True Application.OnTime timer, "chk" MsgBox "open" End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) If timerFlag Then Application.OnTime timer, "chk", , False MsgBox "timer cxl" End If MsgBox "close" End Sub

  • エクセルVBAにて保存するとき

    Private Sub Workbook_BeforeClose(Cancel As Boolean) If MsgBox("エクセルを終了してもよろしいですか?", vbYesNo) = vbNo Then Cancel = True Exit Sub End If Application.DisplayAlerts = False Application.Quit End Sub Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) MsgBox "そのボタンでは保存できません。" & vbCrLf & _ "雛形は残しておきましょう" & vbCrLf & _ "" & vbCrLf & _ "ツールバーの「マクロなし出力」から保存できます。" Cancel = True End Sub という二つのマクロをThisworkbookにいれてあるんですが、 この二つを有効(今は2つ目を'でコメント状態にしてあるので保存可)にすると保存できなくて困っています。 二つを有効にした時はどのようにほぞんすればいいですか?

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

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

  • フォームのボタンからのみ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ボタンは無効になりましたが、 フォームからの終了も出来なくなってしまいました。 フォームからのみ終了する方法を教えてください。

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

    ブック(ファイル)だけじゃなくて アプリケーションも閉じたいのですが 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 VBA ブックが本当に閉じられた時だけ別のブックを閉じたい

    Excel VBA ブックが本当に閉じられた時だけ別のブックを閉じたい A.xls B.xls と二つのブックがあります。 A.xlsが閉じられる時、B.xlsも同時に閉じたいです。 A.xlsに以下のマクロを入れました。 Private?Sub?Workbook_BeforeClose(Cancel?As?Boolean) ?Workbooks("B.xls").Close?SaveChanges:=False End?Sub 問題はA.xlsが保存してない場合、「A.xlsへの変更を保存しますか?」というメッセー ジが 出てきますが、そこでキャンセルを押された場合でもB.xlsが閉じられてしまいます。 A.xlsが本当に閉じられた時だけB.xlsを閉じたいのですが そのようなことは可能でしょうか?

専門家に質問してみよう