How to run a macro in Word before save?

ms-word, vba

Solution

You can subscribe to application events in `Document_Open` by using `WithEvents` variable and conventional method names (`VariableName_EventName`). Works in templates as well.

You can put this code into `ThisDocument` object, or make a separate class module as described here.

Private WithEvents App As Word.Application

Private Sub Document_Open()
Set App = Word.Application
End Sub

Private Sub App_DocumentBeforeSave(ByVal Doc As Document, SaveAsUI As Boolean, Cancel As Boolean)
MsgBox("BeforeSave")
End Sub

List of all application events.

Problem

How to make Microsoft Word to run a VBA macro every time before any document is saved? Could it be done without adding macros into the document itself?

Original source