やりたいこと
・個人情報を扱うツールで、情報が残らないように保存を禁止したい
・ツールを閉じるとき、毎回「変更を保存しますか」と表示されるのがうっとおしい
ソースコード
保存を禁止する
' イベント:保存時
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Call MsgBox("個人情報保護のため、当ブックを保存することはできません")
Cancel = True
End Sub
ファイルを閉じる際の「変更を保存しますか」を表示しない
' イベント:ブックを閉じる
Private Sub Workbook_BeforeClose(Cancel As Boolean)
' ブックを「保存済み」とみなし、「変更を保存しますか」の確認ダイアログを表示させない
ThisWorkbook.Saved = True
End Sub
開発者側で保存をしたい場合
イベントを一時的にコメントアウトするでもいいが、コメントアウト→戻すが手間であるため、以下のコードを用意。
Private Sub ForceSave()
' イベントを切って通常保存をかける
Application.EnableEvents = False
ThisWorkbook.Save
Application.EnableEvents = True
End Sub
読み取り専用を設定しないのか
読み取り専用に設定すると、Ctrl + Sとした際に、「読み取り専用のため保存できません。別名で保存をしてください~」と長ったらしいメッセージが表示されてしまう。
かつ、ファイル保存画面に遷移してしまうのがイヤなので、特に読み取り専用は設定しない。
参考サイト
ブック保存する前に処理実行する【Workbook_BeforeSave】【ExcelVBA】 | VBA Create
Workbook.BeforeSave イベント (Excel) | Microsoft Learn