Макрос Word для сохранения в формате PDF при сохранении файла - PullRequest
0 голосов
/ 16 февраля 2012

Я пытаюсь создать макрос, который выполняется при сохранении файла из Word (или Excel) 2007+. Макрос должен не проверять имя / местоположение файла, чтобы решить, выполнять ли его, а затем, если имя файла проверяется (возможно, потому что к нему добавлен '_temp' или существует в папке \ temp), а также сохранять файл Word также сохраняет в PDF с тем же именем, но, очевидно, с расширением .pdf. Желательно, чтобы PDF-файлы происходили до сохранения, но я не беспокоюсь. В клиенте Word уже установлен плагин SaveAsPDForXPS.

Пока мне удалось выяснить, что мне нужен макрос с обработчиком FileSave (), и что (из записи тестового макроса) бит сохранения может выглядеть следующим образом:

Sub FileSave()
'
' FileSave Macro
'
'
  ActiveDocument.ExportAsFixedFormat OutputFileName:= _
        "C:\Documents and Settings\rdyce\Desktop\Doc1.pdf", ExportFormat:= _
        wdExportFormatPDF, OpenAfterExport:=True, OptimizeFor:= _
        wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, _
        Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
        CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
        BitmapMissingFonts:=True, UseISO19005_1:=False


End Sub

1 Ответ

2 голосов
/ 16 февраля 2012

ОК, я думаю, что это делает jjob, но любые указания на явные ошибки по-прежнему с благодарностью получены.Кроме того, как превратить его в аддин до сих пор остается загадкой:

Sub FileSave()
'
' FileSave Macro
'

    ActiveDocument.Save

    Dim StrFile As String
    Dim StrPath As String
    Dim StrName As String
    Dim StrPDFName As String

    StrPath = ActiveDocument.Path 'Get document path
    StrFile = ActiveDocument.Name 'Get document name

    If InStr(StrFile, "_tempkey") Then 'Check if this is a special file

        If InStr(StrFile, ".") Then 
            StrName = Left(StrFile, (InStr(StrFile, ".") - 1))
        Else
            StrName = StrFile
        End If

        StrPDFName = StrPath + "\" + StrName + ".pdf"

        ActiveDocument.ExportAsFixedFormat OutputFileName:=StrPDFName, _
            ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False, _
            OptimizeFor:=wdExportOptimizeForPrint, Range:=wdExportAllDocument, _
            Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
            CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
            BitmapMissingFonts:=True, UseISO19005_1:=False

    End If

End Sub
...