Вы можете достичь этого, переопределив макросы Save
и SaveAs
которые вызываются, когда пользователь активирует эти две функции из редактора. Это должно работать во всех версиях Word, поддерживающих сохранение непосредственно в формате PDF, в том числе Microsoft Word 2007 с пакетом обновления 2 (SP2) и более поздних версий (включая Word для Mac 2008 и более поздних версий).
Полный макрос для достижения этой цели приведен ниже, вставьте его в активный шаблон, чтобы он работал со всеми документами, которые вы создаете.
Существует обработчик ошибок, который позволяет вам знать, если операция не удалась (скорее всего, потому что у вас открыт PDF, который заблокирован для просмотра). Если есть какие-либо проблемы с перехватом событий, вы также можете попробовать Application Events вместо переопределений.
' Override File -> Save
Public Sub FileSave()
ActiveDocument.Save
SaveActiveDocumentAsPdf
End Sub
' Override File -> Save As...
Public Sub FileSaveAs()
ActiveDocument.SaveAs
SaveActiveDocumentAsPdf
End Sub
Sub SaveActiveDocumentAsPdf()
On Error GoTo Errhandler
If InStrRev(ActiveDocument.FullName, ".") <> 0 Then
Dim strPath As String
strPath = Left(ActiveDocument.FullName, InStrRev(ActiveDocument.FullName, ".") - 1) & ".pdf"
ActiveDocument.SaveAs FileName:=strPath, FileFormat:=wdFormatPDF
End If
On Error GoTo 0
Exit Sub
Errhandler:
MsgBox "There was an error saving a copy of this document as PDF. " & _
"Ensure that the PDF is not open for viewing and that the destination path is writable. Error code: " & Err
End Sub