5

アプリケーション オブジェクトを含むアドインがあります。オブジェクトは WithEvents と宣言されています。これにより、ユーザーがファイルを保存するたびに、一部のデータ ポイントを中央データベースにフラッシュできます。これはほとんどの場合機能します。ただし、1 人のユーザーが Excel アプリケーションを終了し、[保存] ダイアログ ボックスが表示されます。ファイルを保存せずに Excel を終了すると、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
4

2 に答える 2

5

Workbook_BeforeCloseルーチンと Workbook オブジェクトのSavedプロパティを使用できます。

Private Sub Workbook_BeforeClose(Cancel As Boolean)

    If ThisWorkbook.Saved = False Then
        'Call save function
    End If

End Sub
于 2013-01-07T20:36:12.847 に答える
2

BeforeClose の前に使用することを検討しましたか? これはより良い代替手段かもしれません。

于 2013-01-07T20:33:58.927 に答える