No sé si sabes programar en VBA, esta rutina es la mejor opción que conozco para configurar una página. A primera vista se ve compleja pero sólo tienes que cambiar los valores de alto, ancho, margen, etc escritos en inglés al final de la rutina, recuerda que se expresa en pulgadas por eso que se multiplica por 254, tienes que hacer la conversión.
En el ejemplo yo solamente configuro margenes, pero están las variables para tamaño de papel.
Type cad_DEVMODE
RGB As String * 94
End Type
Type type_DEVMODE
' cadNombreDispositivo As String * 16
' entTamaño As Integer
' entControladorExtra As Integer
' lngCampos As Long
entTamañoPapel As Integer
entLongitudPapel As Integer
entAnchoPapel As Integer
cadNombreDispositivo As String * 16
entVersiónEspec As Integer
entVersiónControlador As Integer
entTamaño As Integer
entControladorExtra As Integer
lngCampos As Long
entOrientación As Integer
entTamañoPapel As Integer
entLongitudPapel As Integer
entAnchoPapel As Integer
entEscala As Integer
entCopias As Integer
entOrigenPredeterminado As Integer
entCalidadDeImpresión As Integer
entColor As Integer
entDúplex As Integer
entResolución As Integer
entOpciónTT As Integer
entIntercalar As Integer
cadNombreFormulario As String * 16
lngRelleno As Long
lngBits As Long
lngPW As Long
lngPH As Long
lngDFI As Long
lngDFr As Long
End Type
Type cad_PRTMIP
cadRGB As String * 28
End Type
Type type_PRTMIP
entMargenIzquierdo As Long
entMargenSuperior As Long
entMargenDerecho As Long
entMargenInferior As Long
End Type
---------------------------------------------------------------------------------
Sub ImprimeGuia(rptNombre As String)
Dim DevString As cad_DEVMODE
Dim DM As type_DEVMODE
Dim cadModoDispositivoExterno As String
Dim rpt As Report
Dim entRespuesta As Integer
DoCmd.Echo False
DoCmd.OpenReport rptNombre, acDesign
Set rpt = Reports(rptNombre)
If Not IsNull(rpt.PrtDevMode) Then
cadModoDispositivoExterno = rpt.PrtDevMode
DevString.RGB = cadModoDispositivoExterno
LSet DM = DevString
DM.lngCampos = DM.lngCampos Or DM.entTamañoPapel Or DM.entLongitudPapel Or DM.entAnchoPapel
DM.entTamañoPapel = 256
DM.entLongitudPapel = 11.02 * 254
DM.entAnchoPapel = 8 * 254
LSet DevString = DM
Mid(cadModoDispositivoExterno, 1, 94) = DevString.RGB
rpt.PrtDevMode = cadModoDispositivoExterno
End If
DoCmd.PrintOut acPages, 1, 10, acHigh
DoCmd.Close acReport, rptNombre, acSaveYes
DoCmd.Echo True
End Sub
----------------------------------------------------------------------------------------
Sub DefineMargenes(cadNombre As String)
Dim PrtMipString As cad_PRTMIP
Dim PM As type_PRTMIP
Dim rpt As Report
DoCmd.OpenReport cadNombre, acDesign
Set rpt = Reports(cadNombre)
PrtMipString.cadRGB = rpt.PrtMip
LSet PM = PrtMipString
PM.entMargenIzquierdo = 0.5 * 254 ' Establece los márgenes.
PM.entMargenSuperior = 0.5 * 254
PM.entMargenDerecho = 0.5 * 254
PM.entMargenInferior = 0.5 * 254
LSet PrtMipString = PM ' Actualiza la propiedad.
rpt.PrtMip = PrtMipString.cadRGB
End Sub
Esto va en un Módulo, para invocar esta rutina al hacer clic en 1 botón de comando llamado ImprimirGD en un formulario se hace de la siguiente manera:
Private Sub ImprimirGD_Click()
DefineMargenes ("GuiaDeDespacho")
ImprimeGuia ("GuiaDeDespacho")
End Sub
Observaciones:
GuiaDeDespacho es el nombre de 1 Informe
Vale la pena usarla, no se desconfigura nunca.