Форум по VBA, Excel и Word

VBA, Excel => VBA, макросы в Excel => Тема начата: Lemon от 14 октября 2022, 09:31

Название: Печать и открытие PDF файла из Excel файла через макрос
Отправлено: Lemon от 14 октября 2022, 09:31
Добрый день!

Есть макрос, который печатает спецификацию в PDF-файл из xlsx-файла с несколькими листами (всё приложил). Было необходимо, чтобы после печати PDFки она открывалась автоматом, но тут случилась проблема:
Макрос открывает файл сразу после завершения "отправки" на печать, в то время как файл может ещё обрабатываться "Microsoft print to PDF". Ну и открывается с ошибкой, соответственно (типа "Файл повреждён"). Надо переоткрывать вручную спустя время, когда виртуальный принтер закончит формирование PDF. Неудобно.
Моё воображаемое решение проблемы в том, что после завершения отправки на печать нужно в макросе с периодичностью в секунд 5 проверять, занят ли "Microsoft print to PDF". Как только будет не занят - открыть файл. Но проблема в том, что я не нашёл в инете, как проверить статус принтера, чтобы использовать данный параметр для открытия файла.

На данный момент сделан костыль в виде задержки открытия PDF в зависимости от времени на отправку в печать :) Но при разных конфигурациях компа и разных спецификациях оно может сработать несвоевременно.

Изначально, программист (я сам не программист, но инженер), нанятый фирмой, выполнял печать представленной ниже командой (там и сам макрос отличался, но не критично; проблема именно в выводе в PDF), но на некоторых спецификациях оно занимает до десятков раз больше времени, чем даже вручную распечатать каждый из 4-ёх экселевских листов, отмерив нужное число страниц.

(негодящийся из-за длительности вариант)
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        formName, Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        True