Cabeceras

Buenos días. Espero que puedas ayudarme.
He creado una hoja con una cabecera formada por las 6 primeras líneas. Dentro de estas debe aparecer el número de página. Para ello he introducido un encabezado donde inserto el número de página con un margen de 2,3. El problema es que, según la impresora a la que se envía, el número de página aparece a la altura correcta o no (he probado con HP LaserJet 4M y HP LaserJet 5). Supongo que el problema reside en la configuración de la impresora, pero la aplicación es para un cliente con oficinas en toda España y no puedo saber a priori que modelos de impresora utilizan. ¿Cómo podría resolverlo? ¿Cómo puedo saber el parámetro o propiedad de la impresora que varía el tamaño del margen de la cabecera y utilizarlo para variar dicho tamaño?.
Muchas gracias por todo.

1 respuesta

Respuesta
1
Menuda tarea...
De todos modos creo que la instrucción:
Application. ActivePrinter
Debería ayudarte.
Si tu no puedes identificar la impresora, el macro de impresión debería hacerlo. El problema es que la lista de impresoras limita con infinito (bueno, es bastante grande). Una alternativa sería sólo cambiar el seteo en aquellos casos identificados como problemáticos y el resto dejarlo a default.
Te dejo un macro simplificado como para que te des una idea:
Sub SetMargen()
'Seteo de márgen general
TopMg = 0
BottomMg = 0
'Según modelos identificados con problemas, cambio medida de margen
If InStr(Application.ActivePrinter, "LaserJet 4M") Then
TopMg = 0.39
BottomMg = 0.35
ElseIf InStr(Application.ActivePrinter, "LaserJet 5") Then
TopMg = 0.2
BottomMg = 0.2
ElseIf InStr(Application.ActivePrinter, "LaserJet 1100") Then
TopMg = 0.39
BottomMg = 0.35
End If
'Aplico Medida de Márgenes
With ActiveSheet.PageSetup
.TopMargin = Application.InchesToPoints(TopMg)
.BottomMargin = Application.InchesToPoints(BottomMg)
End With
End Sub
Esto debería resolver tu pregunta. Si así fuera, agradeceré un comentario y que la finalices.
Si no, pregúntame de nuevo.
Un abrazo!
Fernando
Pd. Disculpa la demora pero estoy medio tapado de trabajo.
aclarando qué entendí mal o qué faltó.
Ante todo, te agradezco la respuesta. Como tú dices, es casi imposible, en mi caso, saber por cual impresora puede salir la hoja, y más teniendo en cuenta que la propiedad ActivePrinter te da el nombre que el usuario ha puesto a la impresora y no el modelo, así que las posibilidades son infinitas elevadas al infinito.
El problema radica en saber por qué el margen es diferente en función de la impresora cuando la hoja es la misma (y por tanto, tiene definida el mismo margen). ¿No puedes saber si depende de algún parámetro o propiedad de la impresora y si se puede leer de alguna forma?. Si no lo sabes, ¿Puedes remitir la pregunta a alguien o decirme donde puedo averiguarlo?
Muchas gracias por todo. Espero tu respuesta
Estimo que el problema pasa por el área que aprovecha cada impresora, de acuerdo al modo que toma el papel y al recorrido del cabezal. Así las impresoras laser suelen tener un área de impresión (sobre una misma hoja) mayor que las de Chorro de tinta.
Y supongo que debe haber algún manejo de bibliotecas instaladas en la PC que te dé esos datos de margen. Pero, ¿y si tuviera más de una impresora instalada? Otra vez tendrás que averiguar cual estará por usar...
Personalmente, intentaría una solución más "universal", tal vez manejando la utilidad de Encabezados de página.
De cualquier forma, creo que Valedor o Fjulianes, tendrán algún aporte respecto a la lectura de tales parámetros.
Espero que puedas resolverlo.
Un gran abrazo!
Fernando
Muchas gracias por todo. Se que era una pregunta complicada. Intentaré probar con los expertos que me has dicho. Además he puesto la pregunta en el tablón, a ver si a alguien se le ocurre algo.
Un saludo. Raúl

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas