現在のドキュメントを保存するときに何らかの処理を行うカスタム Word テンプレートを作成しています。
Office2007 では、ドキュメントを保存するために、Save および Save As 関数を使用し、FileSave および FileSaveAs マクロでイベントを処理できます。
ただし、ユーザーが [名前を付けて保存] オプションにカーソルを合わせると、他のサブオプションが表示されます: ドキュメントとして保存、Word テンプレートとして保存、Word 97-2003 ドキュメントとして保存など。これらのサブオプションには独自のイベントがないようです。しかし、ユーザーがいつそれらを使用するか知りたいです。
そのため、DocumentBeforeSave イベントを使用するというアイデアを思いつきましたが、保存が標準の Save/SaveAs オプションで行われたのか、サブオプションで行われたのかを把握する必要があります。
私は、Save/SaveAs 関数で変数を True に設定することを考えました。DocumentBeforeSave イベントは、通常の保存方法の 1 つが発生したかどうかを確認し、変数を False に戻します。
しかし、さまざまな方法を試してみたところ、ThisDocument と BeforeSave イベントを持つクラス モジュールの間で変数の値を渡す方法がわかりません。
何か案は?ありがとう!
編集:動作しないコード例:
このドキュメント:
Public pSSave As Boolean
Public Property Get SSave() As Boolean
SSave = pSSave
End Property
Public Property Let SSave(Value As Boolean)
pSSave = Value
End Property
Sub FileSave()
Me.SSave = True
If SSave = True Then
MsgBox "True"
End If
Application.ActiveDocument.Save
If SSave = True Then
MsgBox "True"
End If
End Sub
クラス モジュール:
Private Sub App_DocumentBeforeSave(ByVal Doc As Document, SaveAsUI As Boolean, Cancel As Boolean)
If Application.ActiveDocument.SSave = False Then
MsgBox "False"
End If
End Sub
クラス モジュールの登録は適切に行われているので、コードを貼り付けません。
表示される結果は True、False、True ですが、理論的には True、True のはずです。