如何使用 VBA 打印由下拉列表控制的图表的多个 PDF?

如何使用 VBA 打印由下拉列表控制的图表的多个 PDF?

我有一张 Excel 工作表,它生成一个组合图表来显示 49 个制造工作单元的趋势数据。图表源数据基于包含大量公式的单元格(下图中心)。我已构建工作表,以便用户从 A5 中的下拉列表中选择一个工作单元,然后公式和图表都会自动更新。A5 数据验证的来源是另一个工作表中的表格中的一列。我已在该工作表中设置了图表周围的打印区域。

Excel 工作表屏幕截图

现在,我可以使用以下代码循环遍历所有图表并将每个图表打印到单页 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。

有没有办法用 VBA 将它们导出到同一个 PDF,而不是随后用 Adob​​e/类似软件合并它们?我发现有人发布了尝试做类似事情的问题,但它们涉及从多个工作表(而不是同一个工作表的多个实例)导出打印区域。

答案1

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&rhtocid=_6_1_8_23_1_72

或者,您可以使用Shell.ShellExecute开源命令行 pdf 工具。

相关内容