3

Этот вопрос вдохновлен моим использованием LaTeX, где вы обычно делитесь сгенерированным PDF, а не исходным файлом. Я хочу, чтобы мои документы .docx были исходными файлами, а файлы PDF - файлами для совместного использования. Поэтому я бы хотел, чтобы MS Word создавал PDF-файл с тем же именем документа каждый раз, когда я сохраняю файл .docx . Есть ли способ получить такое поведение? Я на Mac, но было бы неплохо сделать это на компьютере под управлением Windows.

Пример: если я создаю новый документ с именем mydocument.docx , MS Word делает копию в том же месте с именем mydocument.pdf . Файл PDF будет сохраняться и перезаписываться при каждом изменении и сохранении mydocument.docx . Несколько make -like действие?

1 ответ1

4

Вы можете достичь этого, переопределив макросы 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .