Открытие PDF в Word 2019 из Excel 2019 без лишних диал. окон

Программирование на Visual Basic for Applications
jSergey
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 01.09.2005 (Чт) 6:34

Открытие PDF в Word 2019 из Excel 2019 без лишних диал. окон

Сообщение jSergey » 30.11.2020 (Пн) 18:38

Здравствуйте! Возник такой вопрос... Макросом из файла Microsoft Excel 2019 надо открыть PDF-файл, взять из него некоторую информацию, после чего закрыть. Из пакета Microsoft Office 2019 открытие PDF-файлов Excel не поддерживает, только Word. Поэтому алгоритм действий такой: 1. Программно, из макроса, находящегося в файле Excel запускается экземпляр объекта приложения Word. 2. Объект приложения Word открывает PDF-файл, конвертируя его в docx-формат. 3. Из файла, открытого в приложении Word, данные переносятся в нужное место на странице Excel. 4. Приложение Word программно закрывается (без сохранения). Всё это работает. Проблема состоит в том, что не удаётся сделать всё без вывода диалоговых окон и участия пользователя при открытии (конвертации) PDF-документа в Word. Выглядят эти окна следующим образом:
Window1.jpg
Диалоговое окно 1
Window1.jpg (29.41 Кб) Просмотров: 763
Window2.jpg
Диалоговое окно 2
Window2.jpg (43.59 Кб) Просмотров: 763
Код VBA для реализации вышеописанных действий использую следующий:
Код: Выделить всё
Private Sub Копирование_в_Excel_таблицы_из_Word()
    Dim i%, j%, S$, DocFullName$, WA As Object, oMyDoc As Object
    DocFullName = "H:\Users\Win10Pro\Downloads\index.pdf"
    Set WA = CreateObject("Word.Application")
    WA.Visible = True
    WA.Options.ConfirmConversions = False
    Set oMyDoc = WA.Documents.Open(DocFullName, ConfirmConversions = False, ReadOnly = False)
   
    'Основной блок программы

    oMyDoc.Close 0
    WA.Quit False
    Set oMyDoc = Nothing: Set WA = Nothing
End Sub

Добавление строки
Код: Выделить всё
WA.Options.ConfirmConversions = False
после строки
Код: Выделить всё
WA.Visible = True
(VBA-эквивалент снятия флажка в настройках Word: Файл ─> Параметры ─> Дополнительно ─> Общие ─> Подтверждать преобразование формата файла при открытии), как и добавление параметра
Код: Выделить всё
ConfirmConversions = False
в команду
Код: Выделить всё
Set oMyDoc = WA.Documents.Open
, не помогает.
Просто из Word 2019 PDF-документ макросом так (без появления дополнительных диалоговых окон) можно открыть командами:
Код: Выделить всё
  ChangeFileOpenDirectory "H:\Users\Win10Pro\Downloads\"
Documents.Open Filename:="index.pdf", ConfirmConversions:=False, ReadOnly _
        :=False, AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate _
        :="", Revert:=False, WritePasswordDocument:="", WritePasswordTemplate:="" _
        , Format:=wdOpenFormatAuto, XMLTransform:=""

Может, кто подскажет чего по поводу решения данной проблемы?

Михаил Орлов
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 30.09.2021 (Чт) 20:57

Re: Открытие PDF в Word 2019 из Excel 2019 без лишних диал.

Сообщение Михаил Орлов » 30.11.2021 (Вт) 14:43

Как говорится, некропостинг - наше всё :) . Тем более, с момента создания темы не прошло и года.
(Или прошло? Нет, ещё ~4 часа осталось.)

1. Вывод первого диалогового окна подавляется любым из способов, которые вы привели, то есть, и установкой настройки:
Код: Выделить всё
WA.Options.ConfirmConversions = False

и добавлением параметра:
Код: Выделить всё
Set oMyDoc = WA.Documents.Open(DocFullName, False)

Первый вариант изменяет (с сохранением) настройку Word (картинка ниже), поэтому пользоваться лучше вторым вариантом.
Второй вариант, естественно, влияет только на файл, открываемый данной строкой кода.
Проверено в MS-Office 2013, 2016.
Изображение

2. Со вторым диалоговым окном сложнее. Естественно, если поставить галку "Больше не показывать это сообщение", то окно боьлше выводиться не будет,
но, во-первых - это надо делать на каждом компьютере, во-вторых - а как вернуть назад, если понадобится?

В бъектной модели Ms-Office Word.Application.Options содержит 245 свойств.
Мониторинг этих свойств в момент установки галки "Больше не показывать это сообщение" показал, что... ни одно из них не связано с этой галкой.
То есть, на единственном из доступных в данный момент компьютеров попытку узнать, с чем связана диалогового окна, я израсходовал :(.
Доберусь до другого компьютера - повторю процесс под Process Monitor.


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

    TopList