Excelの確認メッセージを一時的に抑止して復元する
DisplayAlertsを必要な区間だけFalseにし、成功時も失敗時も元の値へ戻します。
実行前に確認
- 削除・未保存の破棄を含む練習です。scratchとtemporarySheetを既存ブック・既存シートへ置き換えないでください。
- DisplayAlerts=FalseではExcelが既定の応答を選ぶため、上書きなど意図しない結果につながります。既存データを失う処理には自分の確認を先に用意します。
- MsgBoxやセキュリティ警告を一括で消す設定ではありません。VBEのリセットやEnd文では復元処理を通りません。
- Excel実機での動作は未確認です。コピーした練習用ブックで試してください。
1サンプルコード
Option Explicit
Sub Example7045()
Dim oldAlerts As Boolean
Dim scratch As Workbook
Dim temporarySheet As Worksheet
Dim message As String
oldAlerts = Application.DisplayAlerts
On Error GoTo Failed
Set scratch = Workbooks.Add(xlWBATWorksheet)
Set temporarySheet = scratch.Worksheets.Add(After:=scratch.Worksheets(1))
temporarySheet.Range("A1").Value = "この実行で作った練習データ"
Application.DisplayAlerts = False
temporarySheet.Delete
Application.DisplayAlerts = oldAlerts
scratch.Close SaveChanges:=False
message = "今回作った練習シートと練習ブックだけを処分しました"
CleanUp:
Application.DisplayAlerts = oldAlerts
MsgBox message
Exit Sub
Failed:
message = "処理を中止:" & Err.Description & vbCrLf & _
"作成した練習ブックが残っていれば、内容を確認して閉じてください。"
Resume CleanUp
End Sub図で見るExcelの確認メッセージを一時的に抑止して復元するの流れ
イメージ図DisplayAlertsを必要な区間だけFalseにし、成功時も失敗時も元の値へ戻します。
入力・開始時
今回だけの一時ブックとデータ入り一時シートを作成
実行する処理
元のDisplayAlertsを保存し、Falseの間にそのシートだけ削除
結果
元の警告設定へ戻し、一時ブックを保存せず閉じる
既存ブックや既存シートへ置き換えないでください。失敗時も警告設定を戻し、一時ブックが残れば確認します。
コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。
使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
- 1
デスクトップ版Excelで練習用ブックを.xlsm形式で保存します。Alt+F11→[挿入]→[標準モジュール]を選び、空のモジュールの先頭にこの例全体を貼り付けます。
- 2
重要な作業を保存してから練習します。コードはこの実行で作る一時ブックだけを対象にするので、既存のブック名やシート名へ変更しません。
- 3
Example7045のSub内にカーソルを置き、F5キーで実行します。
- 4
このマクロが新規作成した一時シートだけをExcelの削除確認なしで削除し、一時ブックを保存せず閉じます。DisplayAlertsは元の状態に戻ります。