![]() |
|
|
|
#1
|
|||
|
|||
|
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 |
|
#2
|
|||
|
|||
|
A further solution, which might be just as functional, is to just save the file with a suitable timestamp. The macro below should be called from whichever save function of word that you trap/redirect.
Code:
Sub save_doc_with_pdf_timestamp(doc As Document)
Dim myFullName As String
Dim myFullNameTS As String
' SaveAs2 changes the name of the current document
' therefore we need to preserve the current full name
myFullName = doc.FullName
myFullNameTS = replace(doc.FullName, ".", Format$(Now(), "-yyyy-mm-dd-hh-mm-ss."))
' Saveas2 fails if we don't use the correct file type
' change docx to doc if needed.
myFullNameTS = replace(myFullNameTS, ".docx", ".pdf")
doc.SaveAs2 filename:=myFullNameTS, FileFormat:=wdFormatPDF
' SAVE THE WORD DOCUMENT LAST TO REINSTATE THE FILE NAME.
doc.SaveAs2 filename:=myFullName
End Sub
|
|
| Tags |
| pdf creator, saving, saving options |
| Thread Tools | |
| Display Modes | |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
Problems with creating and saving word templates
|
smd89 | Word | 2 | 03-30-2016 06:38 AM |
| Problem with saving as .PDF | benoitbri | Word | 5 | 02-12-2016 07:31 AM |
Saving as pdf
|
danielraviolo | Word | 5 | 06-19-2015 09:46 PM |
| Saving VBA | skib | PowerPoint | 0 | 02-18-2011 12:59 AM |
| Saving backup | prestoaa | Outlook | 0 | 12-13-2010 08:35 PM |