Access - Tamaño para imprimir

 
Vista:
sin imagen de perfil

Tamaño para imprimir

Publicado por Sara (171 intervenciones) el 17/10/2013 06:56:54
Buenas.

Cómo configuro un formulario (dimensiones) y la impresora para imprimir en un impreso de 20x10cm.? La impresión tiene que hacerla en horizontal, pues sino el papel se queda en la impresora, es decir, el impreso lo pongo a lo largo y no a lo ancho.

Gracias y un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Tamaño para imprimir

Publicado por Marcelo (166 intervenciones) el 17/10/2013 16:38:10
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.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Tamaño para imprimir

Publicado por Sara (171 intervenciones) el 17/10/2013 18:58:31
Gracias, lo voy a problar y te comento.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Tamaño para imprimir

Publicado por Anita (22 intervenciones) el 18/10/2013 00:01:30
Hola Marcelo, tu ejemplo creo que me funcionaría muy bien en mis reportes pues no logro hacer que lleguen hasta el final de la pagina aún habiendo sitio para más impresión, pero me lanza un error al poner tu código en un módulo, despues pongo el código del botón de imprimir y me arroja el siguiente error:

"Error de compilación":
"Se ha detectado un nombre ambiguo: entTamañoPapel"

Si me ayudaras te lo agracecería mucho.
Muy agradecida.
Anita
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Tamaño para imprimir

Publicado por Marcelo (166 intervenciones) el 22/10/2013 14:24:24
Debe estar mal definido el tamaño del papel, lo tienes configurado muy pequeño, por eso llega hasta cierto punto. Creo que arroja ese error porque entTamañoPapel está definido cómo type 2 veces. Desconecta el primero o los que sean necesarios. Prueba y error
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar