MS Access 2003: Configure el informe para imprimir en papel de tamaño Legal utilizando el código VBA

Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.

MS Access 2003: Configure el informe para imprimir en papel de tamaño Legal utilizando el código VBA

Este tutorial de MSAccess muestra cómo usar el código VBA en Access 2003 para configurar un informe para imprimir en papel de tamaño Legal (con instrucciones paso a paso).

Pregunta: En Microsoft Access 2003/XP/2000/97, ¿cómo configuro mediante programación un informe para que se imprima en papel de tamaño Legal (es decir, 8,5 x 14)?

Respuesta: Puede usar las siguientes subrutinas para configurar el informe para que se imprima en papel de tamaño Legal:

Abra su base de datos de Access, haga clic en la pestaña Módulos y cree un nuevo módulo. Pegue el siguiente código:

Type gtypStr_DEVMODE
   RGB As String * 94
End Type

Type gType_DEVMODE
   strDeviceName As String * 16
   intSpecVersion As Integer
   intDriverVersion As Integer
   intSize As Integer
   intDriverExtra As Integer
   lngFields As Long
   intOrientation As Integer
   intPaperSize As Integer
   intPaperLength As Integer
   intPaperWidth As Integer
   intScale As Integer
   intCopies As Integer
   intDefaultSource As Integer
   intPrintQuality As Integer
   intColor As Integer

   intDuplex As Integer
   intResolution As Integer
   intTTOption As Integer
   intCollate As Integer
   strFormName As String * 16
   lngPad As Long
   lngBits As Long
   lngPW As Long
   lngPH As Long
   lngDFI As Long
   lngDFr As Long
End Type

Sub SetToLegal(pReport As String)

   Dim LDevString As gtypStr_DEVMODE
   Dim LDM As gType_DEVMODE
   Dim LDevModeExtra As String
   Dim LRpt As Report

   On Error GoTo Err_Execute

   'Open report in Design view
   DoCmd.OpenReport pReport, acDesign
   Set LRpt = Reports(pReport)

   'Change paper size to legal
   If Not IsNull(LRpt.PrtDevMode) Then

      LDevModeExtra = LRpt.PrtDevMode
      LDevString.RGB = LDevModeExtra
      LSet LDM = LDevString

      '5=legal, 1=standard
      LDM.intPaperSize = 5
      LSet LDevString = LDM
      Mid(LDevModeExtra, 1, 94) = LDevString.RGB
      LRpt.PrtDevMode = LDevModeExtra

   End If

   'Save report changes (suppress system messages temporarily)
   DoCmd.SetWarnings False
   DoCmd.Save acReport, pReport
   DoCmd.Close acReport, pReport
   DoCmd.SetWarnings True

   Exit Sub

Err_Execute:
   MsgBox "Changing paper size to legal failed."
End Sub

Entonces puede llamar a esta subrutina de la siguiente manera:

Private Sub Command0_Click()

   SetToLegal "Report1"

End Sub

Este ejemplo cambia el papel a tamaño legal para generar un papel llamado informe 1.

notas: Para que esta subrutina funcione, debe tener permiso para modificar el objeto de informe.