VBA, MS Access MS Access в примерах

Двухсторонняя печать отчета (на обычном принтере)

Автор: Владимир Мамзиков mvs@seplus.ru (ICQ: 10422611)

Когда-то, давно написал я тут для себя процедурку облегчающую мне жизни при печати отчетов на 60 листов при 2-х стороннем использовании листов.

Работает она так:
      Сначала печатаются нечетные страницы, а потом четные. При этом печать четных страниц идет в обратном порядке, - потому как мой принтер листы переворачивает и мне "в лом" их снова перекладывать :)

Если кому это не подходит, - придется процедурку подправить ;)
В проге нужно сделать специальный отчет "Пустой отчет", - для печати одной
пустой страницы (ну не придумал я как дать принтеру команду пропустить лист
:)

Еще одно.
В распечатываемом таким образом отчете должно быть заведено невидимое
служебное поле "Страниц" c источником данных "=[Pages]"

Public Sub Print2SizeReport(S As String)
    DoCmd.OpenReport S, acPreview
    DoCmd.Minimize
    Dim KolPages As Integer, KolList As Integer, i As Integer
    KolPages = Reports(S)![Страниц]
    KolList = Int(KolPages / 2) + IIf(KolPages Mod 2 = 0, 0, 1)
If MsgBox("Вставьте в принтер " & KolList & " листов !", vbOKCancel) = vbOK Then
    For i = 1 To KolList * 2 - 1 Step 2
        DoCmd.SelectObject acReport, S
        DoCmd.PrintOut acPages, i, i
    Next i
    For i = KolList * 2 To 2 Step -2
        If i = KolPages Then
            DoCmd.OpenReport "Пустой отчет", acNormal
        Else
            DoCmd.SelectObject acReport, S
            DoCmd.PrintOut acPages, i, i
        End If
    Next i
End If
DoCmd.Close acReport, S
End Sub
Назад ToTop
L.E. 10.02.2021
Рейтинг@Mail.ru