Imprimir lista desplegable

Hola experto un saludo a la distancia...
Tengo un documento, en excel con macros que su funcionamiento es sencillo, consta de 2 hojas una llamada Cuadro Final que sirve como recolección de base de datos y la otra llamada Certificado esta contiene una lista desplegable con todos los nombres, que distribuye las notas que corresponde a cada uno.
E problema es que para imprimir el Certificado de cada uno tengo que hacerlo de uno en uno,, imaginémonos que fueran 500...
Lo que quiero es poder imprimir los 500 de una sola vez, con tan solo mandar a imprimir.
Si se pudiera estaría muy agradecido.

1 Respuesta

Respuesta
1
Ok. Pero de donde generas la lista.
La lista de nombres se encuentra en la columna B8 de la hoja Cuadro Final
En forma vertical lógico, para ser más preciso de la celda B8 HASTA B66.
Si quisieras conocer el documento para entenderlo más con gusto te lo envío.
Pero si me explicas que hacer igualmente con unas mil explicaciones lo entenderé..
Ok. Envíamelo al correo [email protected].
Pero lo que necesitas es hacer un ciclo, de decir ejecutar, cierta acción hasta que ya no hallan más datos en tu rango.
Esto se logra con un do while (hacer mientras),
en tu caso seria asi (escrito a mano, si tiene un error me avisas)
sheets("Cuadro Final").select
range("B8").select
do while not isempty(activecell)
nombre = activecell
sheets("Certificado").select
range("tu rango en donde vas a poner el nombre") .value = nombre
ActiveWindow.SelectedSheets.PrintOut Copies:=1  ' ahora imprimes 1 copia el certificado
sheets("Cuadro Final").select
activecell.offset(1,0).select
loop
Creo que mejor se lo envío,, las macros son un tanto difíciles para mi.
Gracias
Te e respondido el correo, considerar el ultimo que te envíe
Lo estuve probando, pero no se logro lo que deseaba,, solo imprime un solo nombre revés y derecho y en diferente hoja, creo que falto darte más información de parte mía..
Mira como ya conoces el documento si podre explicarte mejor:
Si aun lo conservas el archivo fíjate que el certificado esta hecho en dos páginas la impresora lo reconoce página 1(donde están los datos) y página 2 (la parte donde están las notas)
Lo que deseo es imprimir primero todas las caras del certificado osea imprimir de la 1 a la 1 (es la parte donde etan los datos)... luego cuando ya termine con Sindy, Josue etc..
Darle vuelta al papel con la primera parte impresa, para que se le imprima las notas a cada uno.. ..
No se si te la estoy poniendo difícil o si se podrá hacer esa función.
Entonces, agrega un área de impresión, Seria así:
Range("A1:X36").Select
ActiveSheet.PageSetup.PrintArea = "$A$1:$X$36"
Con eso imprimirás solo la primera hoja.
Y para la 2da Hoja la siguiente:
Range("A37:W65").Select
ActiveSheet.PageSetup.PrintArea = "$A$37:$W$65"
Me avisas cualquier duda!
No lo logre, no me dijiste después de que parte lo agregara o solo eso es lo que debería ir si es en el modulo o en la hoja de la macros,, soy sincero tal vez Ni con un manual lo haga... definitivamente te lo reenviare a tu correo con el ultimo documento y me gustaría que me explicaras que pasos debo usar para la impresión no se si estoy haciendo hasta eso mal.
Cuando imprimo y pongo de la 1 a la 1 solo imprime, esa cara... un nombre.
Cuando no le especifico nada me imprime la cara en una hoja y la otra cara en otra hoja. Pero solo de un nombre. A veces sigue tirando hojas pero sin nada de impresión, completamente en blanco. Dándome la impresión que esas son las demás páginas que trae la hoja de excel... que no se cuantas son.
Lo que no he podido ver, es imprimir todos lo es nombres aunque sean mal.. Sindy, Josue, Carlos, Wilmer Carmen etc..
Espero que con esos ajustes que me defines soluciones el problema, esto esta como un poco complicado, si tu lo pudieras probar seria mejor con páginas viejas que no uses, te darías cuenta lo que yo observo...
Creo que pido mucho lo sé. . . No hagas caso, aun así te agradezco.. te lo enviare.
Te había enviado dos correos seguidos, pero aquí te mando todo completo y detallado
Sub certificación()
' No Posicionamos en la hoja "Cuadro Final"
Sheets("Cuadro Final").Select
' Nos Posicionamos en el Rango B8
Range("B8").Select
' Realizamos un ciclo  hasta que la celda actual, este en blanco
Do While Not IsEmpty(ActiveCell)
' Tomamos el nombre de la celda actual y lo guardamos en la variable nombre
nombre = ActiveCell
' Nos Posicionamos en la Hoja "Certificados"
Sheets("Certificados").Select
' Al rango Q18, le pegamos la variable de nombre
Range("Q18").Value = nombre
'Predeterminamos un Área de impresión(Área de Certificado)
ActiveSheet.PageSetup.PrintArea = "$A$1:$POR$36"
' Imprimimos 1 Copia de la Área Predeterminada
ActiveWindow.SelectedSheets.PrintOut Copies:=1
' Predeterminamos la 2da Área de Impresión
Range("A37:W65").Select
' Imprimimos la 2da área de impresión (Área de Evaluaciones)
ActiveSheet.PageSetup.PrintArea = "$A$37:$W$65"
Loop
End Sub
No se si llorar o reírme, me salio un error de compilación.. no tengo ni idea del desastre que hice,, es triste tener la cosas enfrente y no poderlas verlas... creo que me rindo, ni con manual lo logre. . Si me ayudaras directamente te lo agradeceré..
Te he enviado un correo con el certificado.
No se que pasa, pero la impresora ni se da por entendida que hay una macros, no le hace caso al código qué esta allí... o lo que esta especificado en la macros es para "Mi" je je,, posicionarme en la hoja cuadro final, posicionarme en el rango B8, esto es un desastre...
La mando a imprimí y me imprime solo uno, como normalmente lo hace,,, hay que dejar la lista desplegable abierta, tengo que seleccionar los nombres, que más se me ocurre no se, le hago de todo y nada... me pregunto tu ya lo probaste... y si a ti te funciona dime que pasos haces para que eso suceda... porque yo estoy a punto de rendirme.
Sera que necesita una hoja auxiliar. Me doy.
Yo lo prove y me imprimió todas las hojas correctamente,
OJO! Debes crear un modulo y ahí ejecutar la macro, (ejecuta tal cual esta la macro )
No debes realizarlo desde el código de la hoja actual si no que desde un modulo aparte,
Has correr la macro independiente.
Crear un modulo,, queeeeeeee, y eso como se come.
Me fui a la barra de herramientas donde dice macros la ejecute y comenzó a imprimir por si solo, pero me imprimió solo la parte de arriba donde están los datos y solo un nombre, se me fue la alegría... me fije que en la hoja certicados, se puso azul la página de abajo las notas, pero hasta allí, aaaaaa abrí la macros también eche de ver que el área de impresión esta de A1: X36 a mi parecer debería de tener A1: X35, ya que la fila 36 esa parte pertenece a la otra página.,, y otra cosa que note que el encabezado dice Certificación y no Certificados o eso no afecta en nada; bueno pero si a ti te los imprimió, no tengo por que dudarlo, no toque nada porque tu dijiste no tocar nada, obediente si soy.
Ahora me dices que tengo que crear un modulo y ahí ejeuctar la macro,, pase de bachata a merengue, me mataste..
Si me dices a donde ir y que apretar, tal vez... .. ya me están saliendo orejas de burro, un alumno que no aprende nada.
Pero lo puedo intentar aunque me explote la Computadora... se especifico, si .
Para crear el modulo es así.
Presionas ==> alt+F11
Menu Insertar => "Modulo"
Pegas lo siguiente:
Sub certificacion()
' No Posicionamos en la hoja "Cuadro Final"
Sheets("Cuadro Final").Select
' Nos Posicionamos en el Rango B8
Range("B8").Select
' Realizamos un ciclo  hasta que la celda actual, este en blanco
Do While Not IsEmpty(ActiveCell)
' Tomamos el nombre de la celda actual y lo guardamos en la variable nombre
nombre = ActiveCell
' Nos Posicionamos en la Hoja "Certificados"
Sheets("Certificados").Select
' Al rango Q18, le pegamos la variavle de nombre
Range("Q18").Value = nombre
'Predeterminamos un Area de impresi?n (Area de Certificado)
ActiveSheet.PageSetup.PrintArea = "$A$1:$X$35"
' Imprimimos 1 Copia de la Area Predeterminada
ActiveWindow.SelectedSheets.PrintOut Copies:=1
' Predeterminamos la 2da Area de Impresi?n
ActiveSheet.PageSetup.PrintArea = "$A$36:$W$65"
' Imprimimos la 2da area de impresi?n (Area de Evaluaciones)
ActiveWindow.SelectedSheets.PrintOut Copies:=1
' Volvemos a La Hoja Cuadro Final
Sheets("Cuadro Final").Select
' Avanzamos una celda mas abajo para continuar con el siguiente
ActiveCell.Offset(1, 0).Select
Loop
End Sub
Suerte!
Por fin pusimos un pie en la lunaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...
Solo una cosa para que sea perfecto, te cuento que me sigue tirando, cara1 (donde están los datos) y seguido la cara 2 (donde están las notas) de cada alumno.
Lo que quiero es que me tira sola la cara 1 de todos los alumnos primero,
Para luego darle vuelta a todos después e imprimirle la cara 2... si no se puede me dices y lo comprenderé...
Total ya llegue a la luna y gracias, esperare respuesta para luego puntiar y finalizar esta larga jornada.
Hazlo de la siguiente forma:
Sub certificacion()
' No Posicionamos en la hoja "Cuadro Final"
Sheets("Cuadro Final").Select
' Nos Posicionamos en el Rango B8
Range("B8").Select
' Realizamos un ciclo  hasta que la celda actual, este en blanco
Do While Not IsEmpty(ActiveCell)
' Tomamos el nombre de la celda actual y lo guardamos en la variable nombre
nombre = ActiveCell
' Nos Posicionamos en la Hoja "Certificados"
Sheets("Certificados").Select
' Al rango Q18, le pegamos la variavle de nombre
Range("Q18").Value = nombre
'Predeterminamos un Area de impresi?n (Area de Certificado)
ActiveSheet.PageSetup.PrintArea = "$A$1:$X$35"
' Imprimimos 1 Copia de la Area Predeterminada
ActiveWindow.SelectedSheets.PrintOut Copies:=1
Sheets("Cuadro Final").Select
ActiveCell.Offset(1, 0).Select
Loop
If MsgBox("Esperando confirmaci?n para imprimir notas " & Chr(13) & " ?Desea Imprimir?", vbExclamation + vbYesNo, "Confirme Impresi?n") = vbYes Then
Call Imprime_notas
End If
End Sub
Sub Imprime_notas()
' No Posicionamos en la hoja "Cuadro Final"
Sheets("Cuadro Final").Select
' Nos Posicionamos en el Rango B8
Range("B8").Select
' Realizamos un ciclo  hasta que la celda actual, este en blanco
Do While Not IsEmpty(ActiveCell)
' Tomamos el nombre de la celda actual y lo guardamos en la variable nombre
nombre = ActiveCell
' Nos Posicionamos en la Hoja "Certificados"
Sheets("Certificados").Select
' Al rango Q18, le pegamos la variavle de nombre
Range("Q18").Value = nombre
' Predeterminamos la 2da Area de Impresi?n
Range("A36:W65").Select
' Imprimimos la 2da area de impresi?n (Area de Evaluaciones)
ActiveSheet.PageSetup.PrintArea = "$A$37:$W$65"
ActiveWindow.SelectedSheets.PrintOut Copies:=1
Sheets("Cuadro Final").Select
ActiveCell.Offset(1, 0).Select
Loop
End Sub
No me especificaste en que modulo debo de pegarlo y pero bueno lo resolví en el que hice por ultimo... no me especificaste como imprimir una hoja primero y otra después, pero lo resolví también, me lo especificaste en el código, lo cual es Yes para una cara y No para la otra... me has despertado más de tanta explicación que me has dado je je...
Lo he logrado, eres fenomenal,, ahora quiere madurar toda la idea en si, viendo todo el panorama.
Tu crees que sea posible crear un botón para yes y otro para no y así imprimir una cara y después la otra sin necesidad de abrí el Visual basic, y ejecutar la macro, si estoy loco me lo dices... (crear un botón puedo) sino ni modo solo quiero que el documento quede lo mejor posible... y gracias por toda la ayuda prestada hasta el momento.
La usefron me parece muy tediosa ya que el documento no es para mi en especial, sino que puede ser para otra persona que lo único que sabe es meter datos . . . .
El bendito cuadro queda enfrente de mis narices para poder trabajar y si lo cierro no se como volver a mostrarlo, me dejaste bloqueada la página principal; el aspecto que tiene no es que voy a usar, solo es de prueba.
Lo miro demasiado complicado para otros usuarios, para mi no pero tampoco me gusta.
Me gusto que me hayas entendido lo que quiero, eso que hace la usefrom es lo que deseo pero no con ese sistema.
Quiero algo sencillo para el usuario, PULSAR BOTÓN ABRIR y en la otra página que se abrió, ingresa datos PULSAR BOTÓN VOLVER. listo...
Yo lo miro sencillo ahora programarlo es el problema, como hacerlo solo tu eres el único que puede.. ... espero respuesta
Disculpa pero el ultimo comentario, esta dirigida a otro experto, que me esta ayudando en otro proyecto que tengo.
Ahora la de imprimir yes e imprimir no usando usando un botón para cada uno ubicados en la primera hoja ya que esa no se imprime; si me debes la respuesta solo dime si se puede y como hacerle o no para poder finalizarla.
Te lo mando al correo,
Para finalizar al final aparece la opción de hacerlo, no olvides puntear.
No se me puede olvidar lo más importante, de date las 5 estrellas que bien merecidas las tienes; quiero darte las gracias eternamente por el tiempo que me haz regalado, ya que me imagino tienes múltiples compromisos, solo me resta decirte Feliz Navidad y que Dios PROSPERE tu vida en este año nuevo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas