Страницы: 1
RSS
Сохранить PDF документ через Word в формате .mht через Excel VBA
 

Друзья, здравствуйте. Битый час уже пытаюсь решить вроде бы одну простую задачку. Надо через Excel открыть PDF файл через Word и сохранить его в формате (.mht).Код написал, он сохраняет, но при открытии файла вместо данных я получаю абракадабру. Как исправить, в дальнейшем планирую, через PQ вытягивать данные с таблиц.

Буду признателен за любую подсказку. Спасибо

 
а если сразу через PQ? https://www.planetaexcel.ru/techniques/24/5574/
 
New,именно этот пример показанный Николаем и пытаюсь реализовать. Просто хочется уйти от того, что надо сначала открыть в Word, потом сохранить и только потом уже сделать запрос.
Все дело в пользователях, которые будут в дальнейшем работать, с этим файлом, хочется все упростить до нажатия пару клавиш.  
 
Доброе время суток.
Если не используете раннее связывание, то или заменяете перечисления Word соответствующими значениями или включаете раннее связывание. И совет, без нужды не используйте  On Error Resume Next, иначе не отловите, почему что-то пошло не так.
Код
Sub Сохранить_PDF_в_формате_mht()
    Dim objWrdApp As Object
    Dim objWrdDoc As Object
    Dim путь As Range
    Dim имя_файла_для_сохранения As String
    On Error Resume Next
    
    Set путь = ThisWorkbook.Worksheets("Преобразование").Range("A6")

    Set objWrdApp = GetObject(, "Word.Application")
        If objWrdApp Is Nothing Then
            Set objWrdApp = CreateObject("Word.Application")
            Set objWrdDoc = objWrdApp.Documents.Open(CStr(путь))
        End If
        Set objWrdDoc = objWrdApp.Documents.Open(CStr(путь))
'        Set objWrdDoc = Nothing
        Set objWrdApp = Nothing

        objWrdDoc.SaveAs2 Filename:="C:\Temp\" & "\Абракадабра.mht", FileFormat:= _
        9, LockComments:=False, Password:="", AddToRecentFiles:= _
        True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _
        False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
        SaveAsAOCELetter:=False, CompatibilityMode:=0
            
        objWrdDoc.View.Type = wdWebView
        objWrdApp.Quit
End Sub
 
У меня вообще Word не открывает этот файл, ни кодом, ни ПКМ - открыть с помощью Word

Код
Sub Сохранить_PDF_в_формате_mht()
    Dim objWrdApp As Object, objWrdDoc As Object, путь As String
        
    путь = ThisWorkbook.Worksheets("Преобразование").Range("A6")
    Set objWrdApp = CreateObject("Word.Application")
    Set objWrdDoc = objWrdApp.Documents.Open(путь) 'НЕ ОТКРЫВАЕТ ФАЙЛ
    objWrdDoc.SaveAs2 Filename:="C:\Temp\" & "\Абракадабра.mht", FileFormat:=9 'wdFormatWebArchive
    objWrdDoc.View.Type = 6 'wdWebView
    objWrdApp.Quit
    Set objWrdApp = Nothing
End Sub
Изменено: New - 31.01.2021 20:01:40
 
New, у меня тоже не получается открыть Вашим кодом, выходит Debug.
Андрей VG,Спасибо. Андрей ткните пжл. невидящего меня где была ошибка в моем коде? Глаза стер, но разницу вижу только в написании сохраненного формата у Вас числовой код, у меня просто имя формата.
Спасибо
 
Цитата
Aleksey1107 написал:
но разницу вижу только в написании сохраненного формата у Вас числовой код, у меня просто имя формата
В силу отсутствия знания у Excel об "имя формата" и отсутствия Option Explicit wdFormatWebArchive равен 0 или, если говорить об именах в Word wdFormatDocument  :D
 
Цитата
Андрей VG написал:
у Excel об "имя формата"
Верю источникам
 
Цитата
Aleksey1107 написал:
Верю источникам
И что Excel VBA знает об этом источнике? Вы не стесняйтесь - спросите в VBA Editor  Immetiate
?wdFormatWebArchive
И почитайте на досуге, например, AUTOMATION: использование Раннего и Позднего Связывания, чтобы не выглядеть подобно шаману ;)
 
Андрей VG, Спасибо, за статью. Уже изучаю.
Страницы: 1
Наверх