-1

У меня есть лист Excel, который генерирует комбинированную диаграмму для отображения данных о тенденциях в 49 рабочих ячейках производства. Исходные данные диаграммы основаны на ячейках, которые содержат большое количество формул (центр изображения ниже). Я построил лист так, чтобы пользователь выбирал рабочую ячейку из раскрывающегося списка в A5, и все формулы и графики автоматически обновлялись. Источником для проверки данных A5 является столбец в таблице, найденной на другом листе. Я настроил этот лист с областью печати вокруг графика.

Скриншот Excel Sheet

Прямо сейчас я могу использовать следующий код, чтобы пройтись по всем графикам и распечатать каждый на одной странице PDF:

Sub TestLoopMacro()

    Sheets("My Sheet").Select

    'SOURCE FOR TIMER CODE: www.TheSpreadsheetGuru.com/the-code-vault
    Dim StartTime As Double
    Dim SecondsElapsed As Double

    'Remember time when macro starts
    StartTime = Timer


    Dim Count As Integer

    For Count = 2 To 50
        Range("A5").Select
        Range("A5").Value = Worksheets("Cells Sheet").Range("E" & Count)

        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
            "H:\Some Path\Test Exports\" & Worksheets("Cells Sheet").Range("B" & Count) & ".pdf", Quality:=xlQualityStandard, _
            IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
            False
    Next Count

    'Determine how many seconds code took to run
    SecondsElapsed = Round(Timer - StartTime, 2)

    'Notify user in seconds
    MsgBox "This code ran successfully in " & SecondsElapsed & " seconds", vbInformation

End Sub

Я хотел бы иметь возможность печатать графики для всех 49 ячеек в одном PDF. Этот код успешно создает 49 PDF-файлов с уникальными графиками.

Есть ли способ экспортировать их в один и тот же PDF-файл с помощью VBA вместо их последующего слияния с Adobe/ аналогичным? Я нашел опубликованные вопросы о попытках сделать похожие вещи, но они включали области печати, экспортируемые из нескольких листов (в отличие от нескольких экземпляров одного листа).

1 ответ1

0

Acrobat поддерживает javascript, поэтому вы можете выполнить слияние документов с помощью метода acrobat Doc.insertPages .

( https://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/#t=Acro12_MasterBook%2FJS_API_AcroJS%2FDoc_methods.htm%23TOC_insertPagesbc-73&r_1_72_72_72_72_ )_72_72_72_72_72_72_72_72_72_72_72_72_72_72_72_72_72_72_72_72_ )

В качестве альтернативы вы можете Shell.ShellExecute с открытым исходным кодом командной строки PDF-инструмент.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .