Как экспортировать несколько диапазонов в один PDF?

Я хочу экспортировать несколько диапазонов с одного листа в один PDF-файл.

Учетная запись 1 начинается в столбце A, учетная запись 2 начинается в столбце C, учетная запись 3 начинается в столбце E и так далее. Каждая учетная запись может состоять из n строк, но мне нужно максимум 50 строк для каждой учетной записи на листе в формате PDF, например.

Account 1 = 100 rows long
Account 2 = 32 rows long
Account 3 = 56 rows long

В этом случае я бы хотел, чтобы мой pdf выглядел так:

Sheet 1 = first 50 rows of account 1
Sheet 2 = next 50 rows of account 1
Sheet 3 = first 32 rows of account 2
Sheet 4 = first 50 rows of account 3
Sheet 5 = next 6 rows of account 3

Может ли кто-нибудь придумать изящный способ сделать это, который не включает копирование диапазонов на новый лист?


person Community    schedule 11.05.2015    source источник


Ответы (1)


Вам нужно будет сделать код, чтобы выбрать правильный диапазон, но это будет работать:

Dim myfilename As String
Dim mysheet As Worksheet
Dim printRange As Range

myfilename = "C:\MyFolder\MyFile.pdf"
Set mysheet = ActiveWorkbook.Sheets("Sheet2")

'This is needed because even when you clear page breaks, it automatically creates a horizontal one around row 50
Set mysheet.HPageBreaks.Item(1).Location = mysheet.Range("A51")

'Make 2 vertical page breaks

mysheet.VPageBreaks.Add Before:=Range("C1")
mysheet.VPageBreaks.Add Before:=Range("E1")

'Insert code to set range here
Set printRange = mysheet.range("A1:F50,A51:B100,E51:F100")

printRange.ExportAsFixedFormat Type:=xlTypePDF _   
    , Filename:=myfilename

Обратите внимание, что для правильной работы необходимо правильно установить разрывы страниц. Установив разрывы страниц там, где вы хотите, вы распечатаете выбранные страницы.

person OpiesDad    schedule 11.05.2015