Option Compare Database
Option Explicit
Type zwtDevModeStr
   RGB As String * 94
End Type
Type zwtDeviceMode
   dmDeviceName As String * 16
   dmSpecVersion As Integer
   dmDriverVersion As Integer
   dmSize As Integer
   dmDriverExtra As Integer
   dmFields As Long
   dmOrientation As Integer
   dmPaperSize As Integer
   dmPaperlength As Integer
   dmPaperWidth As Integer
   dmScale As Integer
   dmCopies As Integer
   dmDefaultSource As Integer
   dmPrintQuality As Integer
   dmColor As Integer
   dmDuplex As Integer
   dmResolution As Integer
   dmTTOption As Integer
   dmCollate As Integer
   dmFormName As String * 16
   dmPad As Long
   dmBits As Long
   dmPW As Long
   dmDFI As Long
   dmDRr As Long
End Type
Function fnPrintReport_with_PaperSource(rptName As String,iTray as integer)
   Dim rpt As Report
   Dim dm As zwtDeviceMode
   Dim DevString As zwtDevModeStr
   Dim DevModeExtra As String
      
   DoCmd.SetWarnings False
   ' Set Paper Tray for page 1
   DoCmd.OpenReport rptName, acViewDesign
   Set rpt = Reports(rptName)
   DevModeExtra = rpt.PrtDevMode
   DevString.RGB = DevModeExtra
   LSet dm = DevString
   dm.dmDefaultSource = iTray  '1 = Upper Tray, 2 = Lower Tray, 5 = Envelope Feeder
   LSet DevString = dm
   Mid$(DevModeExtra, 1, 68) = DevString.RGB
   rpt.PrtDevMode = DevModeExtra
   DoCmd.Save acReport, rpt.Name
   DoCmd.OpenReport rptName, acViewNormal ' print it out   
 
   DoCmd.SetWarnings True
  
End Function