Excel - Duplicar impresión en la misma hoja dina A4 de un formulario ( UserForm )

 
Vista:
sin imagen de perfil

Duplicar impresión en la misma hoja dina A4 de un formulario ( UserForm )

Publicado por Manuel (6 intervenciones) el 05/12/2014 12:27:32
Hola buenos días.

Soy nuevo en este foro y aficionado novato en Excel.

Gracias a un video tutorial he creado un formulario. dentro del propio formulario he puesto un botón ( IMPRIMIR ).
Y le he dado la función Me.PrintForm. Funciona perfectamente.
El problema radica en que necesito que ese mismo formulario una vez rellenado sus datos ( que ocupa algo menos de la mitad de un folio Dina A4 ), me lo duplique en la misma hoja. Por decirlo de otro modo, tener impreso original y copia en el mismo Dina A4.
He probado distintas funciones pero hasta ahora no lo he conseguido. He estado remirando en internet y no he conseguido dar con la solución. En este mismo foro, dando respuesta a una pregunta distinta, un tal ALFONSO XIV acaba diciendo lo siguiente:
Yo tuve que ingeniármelas para imprimir un formulario 2 veces en la misma hoja (p.ej., un recibo por duplicado) con el menor trabajo posible. Y se me ocurrió enviar los controles del formulario a la impresora con el objeto \"PRINTER\", a través de una rutina genérica que escribí.
El esquema básico de mi rutina era:

1
2
3
4
5
6
7
8
9
10
Public Sub ImprForm(Formulario as Form)
Dim Ctrl as Control
For each Ctrl in Formulario.controls
If typeof ctrl is label or typeof ctrl is textbox then
printer.currentx=ctrl.left
printer.currenty=ctrl.top
printer.print ctrl
endif
next
End Sub

Yo he intentado acoplar esto al código del botón ( IMPRIMIR ), pero no he conseguido el objetivo.

Alguna ayuda, por favor.

Saludos
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
Imágen de perfil de JuanC

Duplicar impresión en la misma hoja dina A4 de un formulario ( UserForm )

Publicado por JuanC (1237 intervenciones) el 05/12/2014 14:58:12
una opción: capturando pantalla (ventana activa, no será lo ideal pero sirve!)

http://www.vb-helper.com/howto_alt_prnt_to_file.html

luego de capturar lo pegás en la hoja e imprimís...

Range("A1").Select
Hoja1.Paste

Range("A15").Select
Hoja1.Paste '//Duplicado debajo de la 1ra imagen...

Hoja1.PrintOut

Saludos, desde Baires, JuanC
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

Duplicar impresión en la misma hoja dina A4 de un formulario ( UserForm )

Publicado por Manuel (6 intervenciones) el 05/12/2014 17:39:27
Gracias por tu rápida aportación JuanC.

Como bien dices el método captura no es el ideal para este caso concreto, aunque si sirve como apaño.

Sigo buscando algo más práctico, como el código Me.PrintForm, pero que me duplicara el formulario en la misma hoja.

He mirado aquí, pero como no soy experto no se muy bien si hay alguna opción.......
http://msdn.microsoft.com/es-es/library/microsoft.visualbasic.powerpacks.printing.printform_properties.aspx

Si alguien puede aportarme algo de luz, lo agradecería

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
sin imagen de perfil

Duplicar impresión en la misma hoja dina A4 de un formulario ( UserForm )

Publicado por Manuel (6 intervenciones) el 06/12/2014 16:46:29
Hola de nuevo.

Con este código se consigue duplicar la impresión del formulario con todos los datos ya rellenados, pero en dos hojas.

Dim i As Integer

For i = 1 To 2
Me.PrintForm

Next i

Pero sigo sin saber como poder hacerlo en una misma hoja,

Saludos
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
Imágen de perfil de JuanC

Duplicar impresión en la misma hoja dina A4 de un formulario ( UserForm )

Publicado por JuanC (1237 intervenciones) el 07/12/2014 14:52:09
Hola Manuel
El método PrintForm sólo envía la imagen del formulario a la impresora, no hay vueltas
Las opciones son capturar en imagen o crear un diseño duplicado en la hoja
y llenar el contenido desde el formulario para luego imprimir...

Saludos, desde Baires, JuanC
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

Duplicar impresión en la misma hoja dina A4 de un formulario ( UserForm )

Publicado por Manuel (6 intervenciones) el 09/12/2014 17:28:22
Hola de nuevo.
Probando y probando, me quedo con la solución de Me.PrintForm y sin más remedio que un formulario por hoja.
Gracias por tu colaboración JuanC.
Y aprovechando un tema que se abrió el 12/01/2013 y que tu contestaste el 13/01/2013, te explico mi siguiente problemilla....

Tengo un libro con una base de datos y una macro que registra la información de un userform. Ese userform solo tiene un botón de comando, que al clickear doy la orden para que imprima el formulario y a su vez registre la información a la base de datos, que es la hoja denominada ARCHIVO . Esto funciona perfectamente.

Ahora solo queda que cada vez que se abra el userform, aparezca en un textbox ( denominado C1 ) un número nuevo, correlativo y ascendente, al último que tiene la hoja ARCHIVO,que, junto con el resto de los datos cumplimentados en el formulario , al darle al botón de comando de ese mismo userform, me lo imprima y a su vez guarde los datos en la base de datos ( hoja ARCHIVO ). Esa hoja, fila a fila va dejando los datos de los formularios que se van rellenando y en su columna A, están los números correlativos.

Con el código colocado dentro del userform he conseguido que me de el numero siguiente al de la celda a3 ( por ejemplo el 2 ) en el textbox C1
Private Sub UserForm_Initialize()
C1 = Worksheets("archivo").Range("a3").Value + 1
End Sub

Pero no consigo más, es decir, el siguiente formulario vuelve a repetirme el mismo número 2.

Que es lo que me falta y donde para que se vayan haciendo correlativos?
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
Imágen de perfil de JuanC

Duplicar impresión en la misma hoja dina A4 de un formulario ( UserForm )

Publicado por JuanC (1237 intervenciones) el 09/12/2014 19:15:08
quizá te falta guardar el valor actualizado en la hoja...

Worksheets("archivo").Range("a3").Value = Worksheets("archivo").Range("a3").Value + 1

Saludos, desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Duplicar impresión en la misma hoja dina A4 de un formulario ( UserForm )

Publicado por Manuel (6 intervenciones) el 09/12/2014 19:49:30
Efectivamente me faltaba guardar ese valor.

Muchas gracias

Saludos desde Palma de Mallorca
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

Duplicar impresión en la misma hoja dina A4 de un formulario ( UserForm )

Publicado por Manuel (6 intervenciones) el 09/12/2014 20:12:34
Hola de nuevo JuanC
Abusando de tu confianza, no sabrías si hay algún modo de que el color de lo que se escribe en el textbox, saliese en rojo, si a las propiedades de ese textbox le he puesto False a Enabled ?
Si está en True si puedo cambiar de color, pero al ponerlo en False queda como en un gris claro.
La explicación de porque lo he puesto en False, es porque ese textbox numera y de este modo no se puede cambiar la numeración.

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
Imágen de perfil de JuanC

Duplicar impresión en la misma hoja dina A4 de un formulario ( UserForm )

Publicado por JuanC (1237 intervenciones) el 09/12/2014 21:37:52
en lugar de Enabled usá Locked

Saludos, desde Baires, JuanC
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