Word VBA で印刷イベントをキャプチャするのは簡単ではありません。ただし、ここに巧妙なトリックがあります:)
これには、次の手順を実行します
クラスモジュールを作成して、Class1
このコードを貼り付けます
Option Explicit
Public WithEvents oApp As Word.Application
Private Sub oApp_DocumentBeforePrint(ByVal Doc As Document, Cancel As Boolean)
ActiveDocument.Bookmarks("DocWasPrinted").Delete
With ActiveDocument.Bookmarks
.Add Range:=Selection.Range, Name:="DocWasPrinted"
.DefaultSorting = wdSortByName
.ShowHidden = True
End With
End Sub
モジュールを挿入して、このコードを貼り付けます
Option Explicit
Dim oAppClass As New Class1
Public Sub AutoExec()
Set oAppClass.oApp = Word.Application
End Sub
Sub Testing()
If hasPrinted = True Then
MsgBox "Document was printed"
'~~> Call your code
Else
MsgBox "Please Print Before Adding"
End If
End Sub
Function hasPrinted() As Boolean
If ActiveDocument.Bookmarks.Exists("DocWasPrinted") = True Then
hasPrinted = True
End If
End Function
ドキュメントを閉じて、もう一度開きます。今それをテストします。
論理:
このコードが行うことは、ユーザーがドキュメントを印刷する瞬間です。コードは、という名前の非表示のブックマークを作成しますDocWasPrinted
。私のコードでは、ブックマークが作成されたかどうかを確認します。
Document Exit のブックマークを忘れずに削除してください。
Private Sub Document_Close()
ActiveDocument.Bookmarks("DoWasPrinted").Delete
End Sub