私はアプリケーションオブジェクトを持つアドインを持っています。オブジェクトはWithEventsとして宣言されています。これにより、ユーザーがファイルを保存するたびに、いくつかのデータポイントを中央データベースにフラッシュすることができます。これはほとんどの場合に有効です。ただし、Excelアプリケーションを終了するユーザーが1人あり、[保存]ダイアログボックスが表示されます。保存されていないファイルでExcelを終了すると、WorkbookBeforeSaveイベントが発生しないことがわかります。Excel VBA - WorkbookBeforeSaveイベントは
強調すると、ユーザーがCTRL-Sを押すか、保存ボタンを押したときにイベントが発生することを確認しました。私は、アプリケーションを終了するとイベントが発生しないことも確認しました。
私はいくつかの回避策(たとえば10秒ごとに自動的に保存する)を考えることができますが、私はそれに夢中ではありません。誰でもこの行動を確認できますか?誰かが治療法を持っていますか?
Option Explicit
Private WithEvents mapp As Excel.Application
Private Sub mapp_WorkbookBeforeSave(ByVal Wb As Workbook, ByVal SaveAsUI As Boolean, Cancel As Boolean)
' Sanity preservation device
Msgbox "WorkbookBeforeSave event fired."
SaveSomeData Wb
End Sub
イベントはまったく発生しますか?おそらく 'Application.enableEvents = True'を確認したい場合 – Larry
はい、CTRL-Sを使用してワークブックを保存するか、リボンの保存ボタンを押すとイベントが発生します。ただし、Excel(ALT-F4)を終了すると、ファイルを保存するように求められますが、WorkbookBeforeSaveイベントは発生しません。 OnQuitやApplicationオブジェクトのようなものがあれば、それを使用します。しかし、私はそれのようなものは見ません。 – PirateGrunt