Imprimir en papel raro

6 envíos / 0 nuevos
Último envío
Cron
Imagen de Cron
Offline
última acción: Hace 1 mes 1 semana
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12725
Imprimir en papel raro

Hola

Quería enviar a una impresora, desde código, un archivo para imprimirlo en un formato de papel bastante raro. mide 159mmx104mm

Me temo que no sea posible definir un tamaño de papel desde Excel, porque lo define el driver de la impresora, pero aun así lo pregunto por si alguien sabe cómo hacerlo.

Muchas gracias. Un saludo

Cron
Imagen de Cron
Offline
última acción: Hace 1 mes 1 semana
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12725
Re: Imprimir en papel raro

Es más, necesitaría también saber cómo puedo localizar exactamente en un punto del papel lo que yo quiero escribir, como sí se puede hacer en Word.

Quiero decir, me gustaría poder colocar al milímetro el contenido de una celda en un punto del papel determinado.

xoan ninguen
Imagen de xoan ninguen
Offline
última acción: Hace 1 año 5 meses
Nivel 1 - 200 puntosNivel 2 - 500 puntos
alta: 19/01/2011 - 10:03
Puntos: 835
Re: Imprimir en papel raro

Por ahora no se me ocurre cómo hacerlo de otra forma, igual con una clase... pero ni idea.

No está documentado en toda la internet, así que toca prueba-error, que es el método que más me gusta a mi... XDDD.

Lo único en lo que he podido avanzar:

Ármate de paciencia (digo tiempo) y prueba este código... puedes cancelarlo a los dos minutos porque no vas a conseguir avanzar mucho más. Pero prueba:

Sub ListameConfiguracionesPagina()
Dim lgContador As long
intContador = 0
Application.ScreenUpdating = False
Dim ConjuntoConfiguracionesPagina As Excel.PageSetup
Set ConjuntoConfiguracionesPagina = ActiveSheet.PageSetup
Do
On Error Resume Next
With ConjuntoConfiguracionesPagina
.PaperSize = lgContador '28672 esta es una definición mía para un papel
If lgContador= .PaperSize Then Debug.Print .PaperSize
End With
DoEvents
lgContador= lgContador+ 1
Loop
On Error GoTo 0

Application.ScreenUpdating = True
End Sub

Vale, ya te has cansado, pero habrás obtenido este listado:

1,3,5,7,8,9,11,12,13,14,20,27,28,34,37

que se corresponden, más o menos (pero no), con las que aquí figuran http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.powerpacks.printing.compatibility.vb6.printer.papersize.aspx

... y no avanzará más hasta llegar a... 28672, que es el primer tipo definido por el usuario, lo cual ocurre varias horas después de ejecución de macro.

El usuario debe haber creado antes los "tamaños de página definidos por el usuario" y tendrá por numeración... el 28672, 28673,... and 'so on'.

Si lo quieres asignar con el xlPaperUser:

Sub AsignaPapel()
Const xlPaperUser = 28673
With ActiveSheet.PageSetup
.PaperSize = xlPaperUser
End With
End Sub

Y si conoces de antemano el tamaño del papel, porque ya lo has creado, con esto imprimirás donde quieras:

With ActiveSheet.PageSetup
.LeftMargin = Application.CentimetersToPoints(xxx.xxxx)
.TopMargin = Application.CentimetersToPoints(xxx.xxxx)
.HeaderMargin = Application.CentimetersToPoints(0) 'Anula el encabezamiento
.FooterMargin = Application.CentimetersToPoints(0) 'Anula el pie
End With
ActiveWindow.SelectedSheets.PrintPreview

-----------------------------------------------------------------

www.TrazEX.com (soluciones sobre Excel)

Cron
Imagen de Cron
Offline
última acción: Hace 1 mes 1 semana
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12725
Re: Imprimir en papel raro

Bueno, el papel mide lo que yo puse encima.

Voy a contar para qué es... Para rellenar automáticamente una quiniela!!!

Estoy con el prueba-error pero dando anchos y altos a las columnas y filas. Pero quería saber si hay la posibilidad de colocar milímetro a milímetro como con Word algo en una hoja de papel.

Aun así, gracias por contestar

xoan ninguen
Imagen de xoan ninguen
Offline
última acción: Hace 1 año 5 meses
Nivel 1 - 200 puntosNivel 2 - 500 puntos
alta: 19/01/2011 - 10:03
Puntos: 835
Re: Imprimir en papel raro

Haber empezado por ahí... Risa

Una actividad tan poco prosaica, merece su tiempo de dedicación:

Sub JugandoConLaRegla()
'Punto: unidad de medida que hace referencia al alto de un carácter impreso
'Un punto es igual a 1/72 de pulgada, o aproximadamente 1/28 de centímetro.
Columns(xxxx).ColumnWidth = Application.CentimetersToPoints(yyyyy)
'Convierte una medida de centímetros a puntos
'1 cm son... 28,3464566929134 puntos, y una hoja tipo A4 sin márgenes tiene sobre 720 píxeles de ancho (aunque no me salen bien las cuentas porque eso son ~25,4 cm).
'Con la medida que utilizar Excel por defecto, la hoja A4 tiene de ancho 102, que es más o menos, 0'2058823/cm.


'Columns(xxxx).ColumnWidth = Application.InchesToPoints(zzzzz)
'Convierte una medida de pulgadas a puntos

End Sub

-----------------------------------------------------------------

www.TrazEX.com (soluciones sobre Excel)

Cron
Imagen de Cron
Offline
última acción: Hace 1 mes 1 semana
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12725
Re: Imprimir en papel raro

Gracias por el dato. Lo comprobaré a ver si me funciona.

Lo que pasa también es que, además, hay unos márgenes mínimos de la impresora (los de Excel ya los puse a cero) que debería tener en cuenta.

Total, la cosa es para imprimir en el trabajo (Ya sabes, que Excel trabaje para mí. Si Excel imprime las quinielas, menos tiempo gastaremos y más podremos dedicar a trabajar... o a urdir más planes alternativos, jaja) y siempre será la misma impresora.

Saludos