Здравствуйте,
помогите, пожалуйста, создать макрос (Excel) для двусторонней печати на одном листе:
диапазон A1:Q50 - книжная ориентация на 1 лист,
диапазон T10:AQ25- альбомная ориентация на оборотной стороне листа
макрос для двусторонней печати диапазонов на одном листе с разной ориентацией
Модератор: Naeel Maqsudov
Если воспользоваться записью макроса (макрорекордером), то получается что-то вроде нижеопубликованного кода :
А ежели после печати нужно сбросить установленные настройки, то, опять же, макрорекордер выдаёт следущее :
Код: Выделить всё
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 'Сброс разрывов страниц
Спасибо, можно создать в макросе:
1) чтобы подача бумаги (переворот) был не ручная, а автоматическая
2) создать кнопку для этого макроса на панели.
Заранее спасибо
1) чтобы подача бумаги (переворот) был не ручная, а автоматическая
2) создать кнопку для этого макроса на панели.
Заранее спасибо
1) Если такая возможность и существует, то мне она неизвестна, ибо с принтерами, которые выполняют все мои обязанности, лично я, не сталкивался. Но даже если она и есть, уверен, что зависит она от модели принтера и вряд ли напрямую "управляется" командами VBA.
P.S. Возможно, используя соответствующие функции WinAPI, Вы и сможете добиться желаемого ... но возможности проверить эту гипотезу, у меня, увы, нет.
2) В XL97-2003 легко, следующие версии уже не ко мне
P.S. Возможно, используя соответствующие функции WinAPI, Вы и сможете добиться желаемого ... но возможности проверить эту гипотезу, у меня, увы, нет.
2) В XL97-2003 легко, следующие версии уже не ко мне

В продолжении темы : вот здесь можно найти статью, где ребята из Microsoft опубликовали пример работы с принтером, поддерживающим двухстороннюю печать.
Т.к. статья касается "чистого" VB и в примере используется об'ект Printer, которого нет в VBA, то Printer.DeviceName можно попробовать заменить на Application.ActivePrinter и если это не прокатит, то на переменную strPrinter
Т.к. статья касается "чистого" 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