Программное управление отчетом

'Создайте отчет с именем "TestRep"
'Выполните следующий код в модуле Access:

Private Sub ReportSetup()
Dim prtFirst As Printer
Dim prtLoop As Printer
Dim s As String
Dim i As Long
'Подготавливаем список принтеров
For Each prtLoop In Application.Printers
    With prtLoop
        s = s & i & "-" & .DeviceName & "/" & "Driver name: " & .DriverName & " Port: " & .Port & VBA.vbCrLf
    End With
    i = i + 1
Next prtLoop

'Открываем отчет в режиме конструктора, в скрытом режиме
DoCmd.OpenReport "TestRep", acViewDesign, , , acHidden
'Предлагаем выбрать принтер из подготовленного выше списка
i = InputBox(s, "Введите номер принтера", 0)
'Настраиваем отчет на работу с выбранным принтером
Reports("TestRep").Printer = Application.Printers(i)
Set prtFirst = Reports("TestRep").Printer

' Раскомментируйте свойства принтера, значения которых хотите изменить программно
With prtFirst
'    .TopMargin = 1440
'    .BottomMargin = 1440
'    .LeftMargin = 1440
'    .RightMargin = 1440
'
'    .ColumnSpacing = 360
'    .RowSpacing = 360

'    .ColorMode = acPRCMColor
'    .DataOnly = False
'    .DefaultSize = False
'    .ItemSizeHeight = 2880
'    .ItemSizeWidth = 2880
'    .ItemLayout = acPRVerticalColumnLayout
'    .ItemsAcross = 6

'    .Copies = 1
'для примера меняем ориентацию отчета
If MsgBox("Выберите ориентацию, ДА - книжная , Нет - альбомная", vbYesNo) = vbYes Then
    .Orientation = acPRORPortrait
Else
    .Orientation = acPRORLandscape
End If
'    .Duplex = acPRDPVertical
'    .PaperBin = acPRBNAuto
'    .PaperSize = acPRPSA4 ' acPRPSLetter
'    .PrintQuality = acPRPQDraft ' acPRPQMedium
End With
'Закрываем отчет, сохраняя сделанные изменения
DoCmd.Close acReport, "TestRep", acSaveYes
'Открываем отчет в режиме просмотра
DoCmd.OpenReport "TestRep", acViewPreview
End Sub


Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=8046