Страницы: 1
RSS
Экспорт DOC в PDF через VBA EXCEL
 
Добрый день!
Что не так? Почему не работает
Код
Sub ExportDocPDF()
Dim objWord As Object, objDocument As Object
    Set objWord = CreateObject("word.application")
    Set objDocument = objWord.Documents.Open(Filename:="C:\template.docx")
    objDocument.ExportAsFixedFormat OutputFileName:="C:\template.pdf", ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:=wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, BitmapMissingFonts:=True, UseISO19005_1:=False
   'ActiveDocument.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\template.pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
    objDocument.Close: objWord.Quit
    Set objDocument = Nothing: Set objWord = Nothing
    
End Sub
Изменено: spacemakerman - 17.02.2018 20:59:00
Я только учусь
 
Вставьте OPTION EXPLICIT в начало модуля и увидите кучу необъявленных констант в коде.
 
Потому что Excel не знает про константы Word-а. Например, он не знает что такое wdExportFormatPDF. А т.к. у Вас нет директивы Option Explicit, то Excel на неё не ругается, а воспринимает как Empty. Что в числовом выражении будет 0. И именно число 0 подставляется в качестве параметра.
Каждая константа имеет свое числовое представление. Например, wdExportFormatPDF - это 17.
Поэтому Вам надо указывать так:
Код
objDocument.ExportAsFixedFormat OutputFileName:="C:\template.pdf", ExportFormat:=17, ....
И так для всех именованных констант Word, которые используете из Excel.
Подробнее про это я рассказывал в этой статье: Как из Excel обратиться к другому приложению
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Апострофф, Спасибо попробую
Дмитрий Щербаков, Спасибо за развернутый ответ! Буду разбираться )
Я только учусь
Страницы: 1
Наверх