Пакетные PDF-файлы с различными строками Excel - PullRequest
0 голосов
/ 17 сентября 2018

Я не уверен, выполнимо ли это в Excel, но так как в нем много мощных функций, я думаю, что может быть способ.
У меня есть лист Excel, который содержит несколько строк данных.
У меня есть лист 2, который в основном является печатной версией этих данных, однако она соответствует только 1 строке данных.
Есть ли способ для меня, чтобы сохранить в массе PDF Лист 2, но с каждой отдельной строкой? например, A2, B2, C2, D2 содержат определенные данные, которые распределены по разным частям листа 2. Я хочу заполнить их и сохранить в формате PDF, затем я хочу, чтобы A3, B3, C3 и D3 повторно заполнили поля & перезаписать предыдущие звуки и сохранить PDF-файл с новым именем (или только последовательным).
Это возможно или нет?
У меня есть небольшой опыт работы с VBA в Access и некоторый опыт работы со Swift и другими языками программирования, поэтому я знаю некоторые основы.

1 Ответ

0 голосов
/ 18 сентября 2018

Фактическое решение будет зависеть от того, как ваши данные размещены, но в качестве примера рассмотрим следующие данные.

enter image description here

На листе 2 установите область печати для той части, которую вы хотите включить в PDF.

Тогда этот цикл будет создавать PDF для каждого идентификатора, который находится в столбце A на листе 1:

Private Sub exportToPDFLoop()

    Dim rng As Range
    Dim c As Range

    With ThisWorkbook.Sheets("Sheet1")
        Set rng = Intersect(.Range("A:A"), .UsedRange)
    End With

    For Each c In rng

        'Skip Row 1 (headers)
        If c.Row > 1 Then

            With ThisWorkbook.Sheets("Sheet2")

                .Range("B1").Value = c.Value

                .Calculate

                .ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
                    ThisWorkbook.Path & "\testfilename_" & CStr(c.Value) & ".pdf", Quality:= _
                    xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
                    OpenAfterPublish:=True

            End With

        End If

    Next c

End Sub
...