Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Manejo de Margenes por VBA

638 views
Skip to first unread message

Milton Zafra Lizcano

unread,
Feb 7, 2008, 7:53:04 AM2/7/08
to
Tengo un programa que diligencia formatos preimpresos, pero dependiendo de
la impresora (Laser o Matriz de punto) debo ajustar manualmente (vista de
diseño del informe) las margenes derecha e inferior.

Existe alguna forma para tomar por ejemplo los datos de una tabla y
aplicarlos a las margenes, evitando esta manipulación del Informe ?

Gracias,

Milton Zafra L.


José Mª Fueyo

unread,
Feb 7, 2008, 8:44:15 AM2/7/08
to
Hola Milton
¿Versión de Access...?

Salu2
--
José Mª Fueyo
[MS MVP Access]

Milton Zafra Lizcano

unread,
Feb 7, 2008, 8:33:06 PM2/7/08
to
Trabajo sobre Access 2003, pero pienso empezar a migrar a 2007.

Existe alguna forma de hacerlo sobre Access 2003 ?

Cordialmente,

Milton Zafra L.
"José Mª Fueyo" <jmf...@NOSPAMya.com> escribió en el mensaje
news:1D40CFE2-1C1A-407C...@microsoft.com...

José Mª Fueyo

unread,
Feb 8, 2008, 2:44:59 AM2/8/08
to
Hola Milton.
Mira la colección printers. Entre las distintas propiedades que tiene, están
los distintos márgenes.
Modificando un poco un ejemplo de Juan A. de Ribera, en
http://accessvbafaq.mvps.org/item.asp?pagina=75

DoCmd.OpenReport "informe1", acViewDesign, , , acHidden
with Printers("Acrobat Distiller")
.LeftMargin=25
.RigthMargin=25
end with
Reports("informe1").Printer = Printers("Acrobat Distiller")
DoCmd.Close acReport, "tblAutores", acSaveYes
DoCmd.OpenReport "informe1"

Milton Zafra Lizcano

unread,
Feb 8, 2008, 5:55:18 AM2/8/08
to
José,

Muchas Gracias, voy a probar esta solución y estaré informando el resultado.
A simple vista parece que es la solución.

Cordialmente,

Milton Zafra L.
"José Mª Fueyo" <jmf...@NOSPAMya.com> escribió en el mensaje

news:2EDEEDF2-A345-4EC6...@microsoft.com...

Milton Zafra Lizcano

unread,
Feb 8, 2008, 9:24:58 PM2/8/08
to
Analizando el ejemplo tengo unas preguntas:

Cuando uno crea un informe, en la vista de diseño del formulario (Access
2003), en configurar página, se tiene acceso a las margenes de ese informe.

Trabajar con las margenes de "Printers" es lo mismo que trabajar con las
margenes del informe ?

Al final del código presentado, la penultima línea no debería ser:
DoCmd.Close acReport, "informe1", acSaveYes ? (pues se hace menció a un
informe tblautores)


Milton Zafra L.

"José Mª Fueyo" <jmf...@NOSPAMya.com> escribió en el mensaje

news:2EDEEDF2-A345-4EC6...@microsoft.com...

José Mª Fueyo

unread,
Feb 9, 2008, 3:40:09 PM2/9/08
to
Hola Milton
En base al ejemplo de Juan, he creado el mío. Como en éste equipo no tengo
impresoras, tengo que usar la Adobe Printer.
En la base de datos Neptuno, he copiado el informe "Factura" a "_Factura".
He creado un formulario con un solo botón, y en el evento click del mismo he
puesto esto

Private Sub Comando0_Click()
On Error Resume Next
DoCmd.OpenReport "_Factura", acViewPreview, , , acHidden
Reports("_Factura").Printer = Printers("Adobe PDF")
Reports("_Factura").Printer.LeftMargin = 0
Reports("_Factura").Printer.RightMargin = 0
Reports("_Factura").Visible = True
DoCmd.PrintOut
DoCmd.Close acReport, "_Factura"
End Sub

Esto te genera un pdf con margen izquierdo 0, el derecho lo ajusta al
pasarme de los límites de la impresora, pero es igualmente válido.
Creo que te puede funcionar muy bien. Coméntame algo al respecto, ¿vale?

Milton Zafra Lizcano

unread,
Feb 10, 2008, 10:55:33 PM2/10/08
to
José, muchas Gracias.

Bueno te cuento, yo utilizó el PDF Creator, por lo tanto lo estoy usando
como impresora, para trabajar casi de la misma manera y entender el ejemplo
que me enviaste.

Parece que todo va por buen camino.

Yo tengo una tabla donde guardo el nombre del informe y las margenes
Superior e Izquierda, las otras las pongo en 0.

Cuando entro a la vista de diseño del informe, tengo las margenes en
milimetros, en la tabla que guarda las margenes para cada informe tengo 100
como superior y 100 como izquierda, pero al observar en la vista previa las
margenes veo que no coloca 100 sino 1.76.

Coloque 100 pues inicialmente le tenía 10 y cambiaba a 20 y no se notaba la
diferencia.

Surgen dos inquietudes:

1. Como manejo una escala de milimetros, pues no se en que escala anda
trabajando.
2. Quiero que el informe utilice la impresora predeterminada, intente
colocando:
> Reports("_Factura").Printer = Printers(Default), pero me tomo el PDF
> Creator, no importa pues me ha servido usar por ahora esta impresora. Pero
> como ordeno usar la impresora predeterminada.


Para tu información, esta aplicación es para diligenciar unos formatos
preimpresos que siempre que se cambia de impresora o cliente, se debe
ajustar la margen superior e izquierda.

Creo que ya estoy a punto de obtener lo que andaba buscando

Gracias,

Milton Zafra L.


"José Mª Fueyo" <jmf...@NOSPAMya.com> escribió en el mensaje

news:ED523906-21E7-4AAC...@microsoft.com...

José Mª Fueyo

unread,
Feb 11, 2008, 3:50:39 AM2/11/08
to
Hola Milton
Respecto a como están expresados los márgenes, no tengo plena seguridad pero
parece que son twips. Te pego lo que viene al respecto de ésta unidad en el
MSDN de Visual Studio 6
<pego>
twip
Unidad de medida de pantalla que es igual a 1/20 de punto. Un twip es una
unidad de pantalla independiente utilizada para asegurar que la ubicación y
proporción de los elementos de la pantalla en la aplicación son los mismos
en todos los tipos de pantallas. Hay aproximadamente 1440 twips en una
pulgada lógica o 567 twips en un centímetro lógico (la longitud de un
elemento de pantalla que mide una pulgada o un centímetro cuando se
imprime).
</pego>

Y para la impresora por defecto, nuevamente Juan A. de Ribera tiene una
solución: http://accessvbafaq.mvps.org/item.asp?pagina=72

Milton Zafra Lizcano

unread,
Feb 11, 2008, 10:35:22 PM2/11/08
to
José, muchas gracias.

Creo que podemos dar por terminado este caso.

Lo de la impresora predeterminada me funciona OK.

Y para las margenes el usuario especifica en milimetros y yo multiplico por
56.7 y al entrar a la vista preliminar del informe, toma los milimetros como
necesito.

Si tengo algun problema lo estaré reportando.

Saludos,

Milton Zafra L.
"José Mª Fueyo" <jmf...@NOSPAMya.com> escribió en el mensaje

news:6D1D84BF-F1B0-42A7...@microsoft.com...

José Mª Fueyo

unread,
Feb 12, 2008, 2:55:31 AM2/12/08
to
:-)
0 new messages