VBA выполняет макросы для документов Word в Excel - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть расчет Excel, который содержит информацию для документа Word.Я хочу, чтобы открыть документ Word и автоматически сохранить его в формате PDF - с макросом в Excel.

Я уже пробовал следующее:

Set WordApp = CreateObject("Word.Application")
With WordApp.Application
   .Visible = True
   .Documents.Open (LocationTemplate)
        .ExportAsFixedFormat OutputFileName:= _
        OfferPath, _
        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
        ChangeFileOpenDirectory _
        DestinationPath
    .Quit

End With

В чем ошибка?С нетерпением ждем вашей поддержки.

Ответы [ 3 ]

0 голосов
/ 12 сентября 2018

Ошибка выполнения 438: «Объект не поддерживает это свойство или метод»

Ваша проблема связана с тем, что в блоке With вы ссылаетесь на WordApp.Application (что само по себе избыточнои может быть уменьшен до WordApp, так как он уже представляет Word.Application объект) и, таким образом, со строкой .ExportAsFixedFormat [...] вы по существу делаете:

Word.Application.ExportAsFixedFormat

Этот метод не 'не существует на Application объекте.(Теперь прочитайте описание ошибки еще раз - заметьте что-нибудь?)

Если вместо поздней привязки объекта Word.Application через CreateObject() установить ссылку на объектную модель Word (Меню: Дополнения - Ссылки), выможет делать такие вещи, как:

Dim wordApp As Word.Application
Set wordApp = New Word.Application
With wordApp.Documents.Open LocationTemplate
    .ExportAsFixedFormat [...]
End With

, который предоставляет вам (очень необходимый) intellisense, а также ошибки времени компиляции вместо ошибок времени выполнения при попытке вызвать неправильные методы.

0 голосов
/ 13 сентября 2018

Ошибка в том, что вы выполняете .ExportAsFixedFormat для объекта Word.Application.Этот метод действителен для Word-документа .Ваш код должен быть похож на следующий.

Обратите внимание, что я добавил объявления переменных для WordApp и WordDoc, а также код для release этих объектов.

Dim WordApp as Object
Dim WordDoc as Object
Set WordApp = CreateObject("Word.Application")
With WordApp.Application
   .Visible = True
   Set WordDoc = .Documents.Open (LocationTemplate)
   WordDoc.ExportAsFixedFormat OutputFileName:= _
        OfferPath, _
        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
    .Quit 0 'To not save changes to the document, just close it
    Set WordDoc = Nothing
End With
Set WordApp = Nothing
0 голосов
/ 12 сентября 2018

кажется, что вы не выбираете открытый документ

попробуйте что-то вроде этого

Set WordApp = CreateObject("Word.Application")
With WordApp.Application
  .Visible = True
  .Documents.Open (LocationTemplate)

  .Activate

  ActiveDocument.ExportAsFixedFormat 
    .ExportAsFixedFormat OutputFileName:= _
    OfferPath, _
    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
    ChangeFileOpenDirectory _
    DestinationPath
  .Quit

End With

Удачи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...