Страницы: 1
RSS
Макрос для печати четных и нечетных страниц с разными полями
 
Добрый день, нужен макрос для печати четных и нечетных страниц с разными полями. Есть такой, но он печатает все листы как четные. Я плохо разбираюсь в кодах и вообще не пойму как его исправить. Помогите, пожалуйста!
Код
Sub PrintActiveSheet()
Dim ws As Worksheet
Dim oddPages As Boolean
Set ws = ActiveSheet
oddPages = False

With ws.pageSetup
    .TopMargin = Application.InchesToPoints(0.393700787401575)
    .BottomMargin = Application.InchesToPoints(0.393700787401575)
End With

If ws.Index Mod 2 = 0 Then
    With ws.pageSetup
        .LeftMargin = Application.InchesToPoints(0.196850393700787)
        .RightMargin = Application.InchesToPoints(0.78740157480315)
    End With
Else
    With ws.pageSetup
        .LeftMargin = Application.InchesToPoints(0.78740157480315)
        .RightMargin = Application.InchesToPoints(0.196850393700787)
    End With
End If

ws.PrintOut
End Sub
 
как то так
Код
Sub Print_Odd_Even()
Dim Totalpages As Long
Dim StartPage As Long
Dim Page As Integer
StartPage = 1 ' Задайте 1 = для Нечетных или 2 - для Четных
' Или используйте диалог для ввода
'StartPage = InputBox("Ввведите 1 для печати нечетных страниц, 2 - для четных")
Totalpages = Application.ExecuteExcel4Macro("GET.DOCUMENT(50)")
For Page = StartPage To Totalpages Step 2
ActiveSheet.PrintOut from:=Page, To:=Page
Next
End Sub
Изменено: DJMC - 31.01.2024 12:58:39
 
Цитата
написал:
как то такКод ? 123456789101112Sub Print_Odd_Even()Dim Totalpages As LongDim StartPage As LongDim Page As IntegerStartPage = 1 ' Задайте 1 = для Нечетных или 2 - для Четных' Или используйте диалог для ввода'StartPage = InputBox("Ввведите 1 для печати нечетных страниц, 2 - для четных")Totalpages = Application.ExecuteExcel4Macro("GET.DOCUMENT(50)")For Page = StartPage To Totalpages Step 2ActiveSheet.PrintOut from:=Page, To:=PageNextEnd Sub
Добрый день.
Тема актуальна. Этот код печатает четные и нечетные страницы, но при этом поля не меняются. Как его можно подправить, что бы поля были разные для четных (левое -1 см, правое - 2,5см) и нечетных страниц (левое -2,5см и правое -1см)?
 
Зеркальные поля
Виртуальный принтер
 
У моего принтера в настройках нет упоминания о зеркальных полях. ПДФ принтер то же не выдает их.(((
Значит задача макросом то же не решаема?
 
Зеркальные поля обычно нужны для печати на обеих сторонах бумажного листа, значит идеальным решением будет использование виртуального принтера, например такого.
Если поля нужны для разных листов, тогда можно решить макросом - создавая отдельные задания на печать для чётных и нечётных листов.
 
У нас на объекте заблокирован выход на сайт по вашей ссылке((( Если не трудно, можно мою проблему решить макросом?
А то приходится менять поля в ручном режиме( то одно забудешь, то другое забудешь переправить...и перепечатываю по 100 раз одно и то же
 
Цитата
Sambo написал:
то одно забудешь, то другое забудешь переправить...и перепечатываю по 100 раз одно и то же
эта проблема исправляется не макросом, а виртуальным принтером
ссылки, сравнительные обзоры и "параллельные лицензии" можно найти самостоятельно через любой поисковик
 
Спасибо. Попробую найти и скачать виртуальный принтер.
 
Цитата
написал:
можно мою проблему решить макросом?
Код
Sub myPrint()
    Dim sh As Worksheet, yPage As Long
    For Each sh In ActiveWorkbook.Worksheets
        For yPage = 1 To sh.PageSetup.Pages.Count
            If sh.PageSetup.LeftMargin = 70 Then
                sh.PageSetup.LeftMargin = 28
                sh.PageSetup.RightMargin = 70
            Else
                sh.PageSetup.LeftMargin = 70
                sh.PageSetup.RightMargin = 28
            End If
            sh.PrintOut from:=yPage, To:=yPage
        Next
    Next
End Sub
 
Спасибо. Он работает. Как изменить, что бы он печатал только активный лист, а не всю книгу? И можно ли оба кода записать в один?
Цитата
написал:
Код ? 123456789101112Sub Print_Odd_Even()Dim Totalpages As LongDim StartPage As LongDim Page As IntegerStartPage = 1 ' Задайте 1 = для Нечетных или 2 - для Четных' Или используйте диалог для ввода'StartPage = InputBox("Ввведите 1 для печати нечетных страниц, 2 - для четных")Totalpages = Application.ExecuteExcel4Macro("GET.DOCUMENT(50)")For Page = StartPage To Totalpages Step 2ActiveSheet.PrintOut from:=Page, To:=PageNextEnd Sub
 
Код
Sub Печть_листа()
    myPrintSheet ActiveSheet
End Sub

Sub Печать_книги()
    myPrintSheet ActiveWorkbook
End Sub

Private Sub myPrintSheet(sh As Worksheet)
    Const marginMin = 28
    Const marginMax = 70
    Dim yPage As Long
    For yPage = 1 To sh.PageSetup.Pages.Count
        If sh.PageSetup.LeftMargin = marginMax Then
            sh.PageSetup.LeftMargin = marginMin
            sh.PageSetup.RightMargin = marginMax
        Else
            sh.PageSetup.LeftMargin = marginMax
            sh.PageSetup.RightMargin = marginMin
        End If
        sh.PrintOut from:=yPage, To:=yPage
    Next
End Sub

Private Sub myPrintWorkbook(wb As Workbook)
    Dim sh As Worksheet
    For Each sh In wb.Worksheets
        myPrintSheet sh
    Next
End Sub
 
Спасибо)))) работает!
Страницы: 1
Читают тему
Наверх