View Single Post
 
Old 11-07-2017, 03:14 AM
FionaMcKenzie FionaMcKenzie is offline Windows 10 Office 2016
Novice
 
Join Date: Oct 2017
Location: Surrey, United Kingdom
Posts: 14
FionaMcKenzie is on a distinguished road
Default

Hi again,

I was hesitant on the whole Save point... There is a BeforeSave but not an AfterSave event in Word. The only way I could think of doing the PDF save after the Save completed was to evoke a Windows change to evoke the WindowsEvent in Word & do the PDF save then. All very, very mucky. So not a solution! It's such a pity there is no AfterSave event!

However, you can override the Word FileSave process.
Note: This means your program cannot have bugs.

If you SaveAs on an existing file to a new file name, you would have to process your PDF save manually when doing so. But this will trap the save when you want to create your PDF backups.

I've written code for you with comments. You can add this to your template, but be careful with Word overrides.

Let me know if it helps you with your PDF save request though.

Kind regards
Fiona

Option Explicit

Public Sub FileSave()

' Note: FileSave overrides Word's FileSave command!

On Error GoTo ErrorHandler

With ActiveDocument

' Check whether it has a path meaning it's been saved before
If .Path = vbNullString Then

' Show the SaveAs dialog
Word.Dialogs(wdDialogFileSaveAs).Show

Else

' Save the document
.Save
End If

' Was the file saved in the SaveAs Dialog
If .Saved = True Then

' You will need ensure only documents based on this template
' are saved as PDF. Save your source document as a *.dotm
' When you create new instances of the template, this code will run
If .AttachedTemplate = ThisDocument Then

' You don't want to save PDFs of the template, just documents
If LCase(Right(.FullName, 5)) = ".docx" Then

' Not sure if you want to check before saving the PDF?
If MsgBox("Would you like to save a PDF copy?", _
vbYesNo, "Save PDF version") = vbYes Then

' It's active already though
.Activate

' Call the procedure you were given to create the PDF
Call PDFSave.SaveAsDocX_PDF

End If
End If
End If
End If
End With

Exit Sub
ErrorHandler:
' Quite crucial if an error occurs!
MsgBox "An error occurred on FileSave!" & vbCr & vbCr & _
Err.Number & " " & Err.Description, vbOKOnly + vbExclamation, "FileSave Error"
Err.Clear
End Sub
Reply With Quote