Imprimir varios códigos

Es primero que todo saludarte y agradecerte por la labor que haces en este sitio. La pregunta que tengo es muy importante para minimizar tiempos en donde trabajo. Resulta que tengo una aplicación en Excel que consiste en filtrar por códigos a ciertos clientes, y posteriormente imprimir; pero son muchas las impresiones que se deben hacer, la pregunta es si puedo seleccionar varios clientes de la lista de códigos que tengo. La aplicación se basa en buscadores (buscarv) y me traen información de varias bases de datos, pero el problema es que me toca una por una. No se si es posible construir una macro que seleccione de tal código a tal y me imprima de una vez todos los formatos. De antemano te agradezco cualquier ayuda.
3

3 Respuestas

31.975 pts. Vba
¿Ya probaste el Autofiltro?
Pues te comento que no conozco el autofiltro ya que soy un poco nuevo en esto. Ten en cuenta que tengo que escoger un código determinado para poder ver la información de cada cliente; luego imprimo y posteriormente dígito otro código para ver la información de otro cliente y luego imprimo este otro formato. Gracias por cualquier ayuda-
Envíame tu hoja, con el asunto: TODOEXPERTOS, a [email protected]
Estoy examinando tu libro. El problema se resuelve con una Macro que recorra todas las matriculas que están en el rango AA2:AA626, con la condición de que no estén vacías. Estoy trabajando en el código para la solución.
¿Qué version de office utilizas? 2003, 2007, 2010
Es 2007. No se si es mucho abusar pero se me creo otra duda, si puedes me respondes o si no no hay problema, como te digo disculpa; cuando lanzamos la impresión queremos que salga en una sola hoja (delante y por detrás de la hoja) toda la impresión que consta de dos hojas y nos tocaría estar pendientes de voltear la hoja, aquí viene la pregunta será que en la macro se le puede decir que imprima primero la hoja numero uno de todos los códigos y una segunda orden que imprima la segunda hoja para poder imprimir todo el paquete sin estar pendientes de voltear la hoja. Te agradezco si me puedes ayudar. Disculpa tanta molestia.
Los datos los estoy extrayendo de AA2:AA626, que es el rango de validación que utilizas para capturar la celda A10. Le asigné el nombre DATOS.
-
Selecciona el rango y en el cuadro de nombres, teclea DATOS.
-
Con el siguiente código, agregado en Modulo 1, haces el recorrido por todas las matrículas:
-
Selecciona el código y copia
   {ALT}+{F11}-<<modulos>><<modulo1>>
Ve al final del módulo y pega
-
Sub IMPRIMEtodo()
   For Each MATRICULA In Range("AA2:AA626")
      If MATRICULA.Value <> "" Then
         Worksheets("CONSULTA").Range("A10").Value = MATRICULA.Value
      End If
   Next MATRICULA
End Sub
-
Para probarla, ejecuta el macro IMPRIMEtodo, desde:
VISTA-MACRO-{NombreMacro}-Ejecutar
-
Estoy trabajando en la impresión, primero un lado y luego el otro.
No sé si funciona; tengo esta macro; no sé si te sirve para implementar lo de las dos caras de la hoja.
Sub MyMacro()
If MsgBox("¿Estas seguro que desea imprimir todo el registro?", vbYesNo + vbExclamation, "OPCIONES") = vbNo Then
MsgBox "Impresion cancelada"
Exit Sub
End If
Application.ScreenUpdating = False
Sheets("consulta").Select
Range("AA2").Select
For i = 1 To 200
If ActiveCell <> "" Then
Worksheets("consulta").Range("a10").Value = ActiveCell.Value
Sheets("consulta").PrintOut Copies:=1, Collate:=True
ActiveCell.Offset(1, 0).Select
End If
Next
End Sub
Ya completo, con el código que sugieres, quedaría así:
-
Sub IMPRIMEtodo()
   For Each MATRICULA In Range("AA2:AA626")
      If MATRICULA.Value <> "" Then
         Worksheets("CONSULTA").Range("A10").Value = MATRICULA.Value
         Sheets("consulta").PrintOut From:=1, To:=1, Copies:=1, Preview:=True
      End If
   Next MATRICULA
   For Each MATRICULA In Range("AA2:AA626")
      If MATRICULA.Value <> "" Then
         Worksheets("CONSULTA").Range("A10").Value = MATRICULA.Value
         Sheets("consulta").PrintOut From:=2, To:=2, Copies:=1, Preview:=True
      End If
   Next MATRICULA
End Sub 
-
Pruébalo como está, y luego le cambias Preview:=True por Preview:=False, para que se dirija a la impresora predeterminada.
-
Disculpa la ignorancia, utilizo solo la macro tuya o hay que alternar las dos macros.
La última macro que publiqué, lleva la instrucción de impresión, así que solo con ella es suficiente pero, me quedé pensando y le hace falta una linea, para que espere a que termine la impresión de un lado, y después del aviso continúe con el otro. Quedaría así:
-
Sub IMPRIMEtodo()
    MsgBox "Se imprimirá el lado UNO"
    For Each MATRICULA In Range("AA2:AA626")
        If MATRICULA.Value <> "" Then
            Worksheets("CONSULTA").Range("A10").Value = MATRICULA.Value
            Sheets("consulta").PrintOut From:=1, To:=1, Copies:=1, Preview:=True
        End If
    Next MATRICULA
    MsgBox "Se imprimirá el lado DOS"
    For Each MATRICULA In Range("AA2:AA626")
        If MATRICULA.Value <> "" Then
            Worksheets("CONSULTA").Range("A10").Value = MATRICULA.Value
            Sheets("consulta").PrintOut From:=2, To:=2, Copies:=1, Preview:=True
        End If
    Next MATRICULA
    msgbox "Impresión TERMINADA"
End Sub
98.150 pts.
Si me mandas tu archivo mirare si puedo ayudarte
Te mande el archivo modificado si te sirvió
9.750 pts. Trabajo como Auditor Administrativo y Operacional
Claro que se puede. Pásame el archivo y lo trabajamos va.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas