У меня есть vba, который выглядит так:
Sub Print_Info()
Worksheets("Scorecard (Monthly)").Activate
ActiveSheet.PageSetup.PrintArea = "P1,P2,P3,P4,P5"
ActiveWindow.SelectedSheets.PrintOut Preview:=Preview
End Sub
P1, P2 и т. д. – это именованные диапазоны, которые находятся на одном рабочем листе (ежемесячно). При запуске vba результирующая распечатка не выводится в правильном порядке (как указано в VBA) - я думаю, это потому, что на самом деле P1 и P2 находятся ниже P3, P4 и P5 на рабочем листе. Порядок страниц, которые печатаются при использовании vba: P4, P1, P2, P5, P3. Порядок страниц на листе: P3, P4, P5, P1, P2, поэтому порядок печати не имеет для меня никакого смысла при использовании VBA. Причина в том, что это ежемесячный отчет, но меня попросили регулярно предоставлять подмножество информации в немного другом порядке для другой аудитории, поэтому было бы удобно просто использовать некоторый VBA для повторно закажите распечатку, не касаясь фактического рабочего листа, так как он подходит для своей обычной цели.
Есть ли способ заставить Excel распечатать диапазон в одном файле в правильном порядке с одного листа? Я знаю, что мог бы сделать что-то вроде этого:
Sub Print_GSCB_Info()
Worksheets("Scorecard (Monthly)").Activate
ActiveSheet.PageSetup.PrintArea = "GSCB_P1"
ActiveWindow.SelectedSheets.PrintOut Preview:=Preview
ActiveSheet.PageSetup.PrintArea = "GSCB_P2"
ActiveWindow.SelectedSheets.PrintOut Preview:=Preview
ActiveSheet.PageSetup.PrintArea = "GSCB_P3"
ActiveWindow.SelectedSheets.PrintOut Preview:=Preview
End Sub
Однако это приведет к отправке отдельных «файлов» на принтер (что не идеально, поскольку номера страниц не следуют и т. д.).