Страница 1 из 1
макрос для двусторонней печати диапазонов на одном листе с разной ориентацией
Добавлено: 11 сен 2014, 08:22
clar
Здравствуйте,
помогите, пожалуйста, создать макрос (Excel) для двусторонней печати на одном листе:
диапазон A1:Q50 - книжная ориентация на 1 лист,
диапазон T10:AQ25- альбомная ориентация на оборотной стороне листа
Re: макрос для двусторонней печати диапазонов на одном листе с разной ориентацией
Добавлено: 11 сен 2014, 11:55
pashulka
Если воспользоваться записью макроса (макрорекордером), то получается что-то вроде нижеопубликованного кода :
Код: Выделить всё
Private Sub Test()
With ActiveSheet.PageSetup
.PrintArea = "A1:Q50"
.Orientation = xlPortrait
.FitToPagesWide = 1
.FitToPagesTall = 1
.Parent.PrintOut
MsgBox "Переверните лист для печати", vbInformation, ""
.PrintArea = "T10:AQ25"
.Orientation = xlLandscape
.FitToPagesWide = 1
.FitToPagesTall = 1
.Parent.PrintOut
End With
End Sub
А ежели после печати нужно сбросить установленные настройки, то, опять же, макрорекордер выдаёт следущее :
Код: Выделить всё
ActiveSheet.PageSetup.PrintArea = "" 'Сброс области печати
ActiveSheet.ResetAllPageBreaks 'Сброс разрывов страниц
Re: макрос для двусторонней печати диапазонов на одном листе с разной ориентацией
Добавлено: 11 сен 2014, 13:16
clar
Спасибо, можно создать в макросе:
1) чтобы подача бумаги (переворот) был не ручная, а автоматическая
2) создать кнопку для этого макроса на панели.
Заранее спасибо
Re: макрос для двусторонней печати диапазонов на одном листе с разной ориентацией
Добавлено: 11 сен 2014, 13:36
pashulka
1) Если такая возможность и существует, то мне она неизвестна, ибо с принтерами, которые выполняют все мои обязанности, лично я, не сталкивался. Но даже если она и есть, уверен, что зависит она от модели принтера и вряд ли напрямую "управляется" командами VBA.
P.S. Возможно, используя соответствующие функции WinAPI, Вы и сможете добиться желаемого ... но возможности проверить эту гипотезу, у меня, увы, нет.
2) В XL97-2003 легко, следующие версии уже не ко мне

Re: макрос для двусторонней печати диапазонов на одном листе с разной ориентацией
Добавлено: 12 сен 2014, 14:50
pashulka
В продолжении темы : вот
здесь можно найти статью, где ребята из Microsoft опубликовали пример работы с принтером, поддерживающим двухстороннюю печать.
Т.к. статья касается "чистого" VB и в примере используется об'ект
Printer, которого нет в VBA, то
Printer.DeviceName можно попробовать заменить на
Application.ActivePrinter и если это не прокатит, то на переменную strPrinter
Код: Выделить всё
Dim strPrinter As String
strPrinter = Application.ActivePrinter
If strPrinter Like "*(* :) " Then
strPrinter = RTrim(Left(strPrinter, InStrRev(strPrinter, "(") - 1))
End If