Impresión Múltiple en Excel con macro (Parte 2)


En esta entrada vamos continuar con el tema “impresiones múltiples en Excel”. La diferencia es que queremos “Imprimir en PDF” o “Publicar en PDF” .
Suponemos que queremos imprimir las credenciales en PDF para guardarlos en una base de datos, para imprimirlos luego, o publicarlos en internet.  

La forma correcta de imprimir o publicar en PDF es mediante la herramienta de “Exportar a PDF” que trae Excel 2007.

En la web hay muchas dudas acerca de cómo publicar en PDF. Está dado por el método que utilizamos para imprimir en la entrada anterior, el método “PrintOut”. Para este caso no nos sirve ya que debemos imprimir una serie de documentos, guardarlos en una ubicación determinada y darles un nombre.

En esta oportunidad vamos a utilizar el método “ExportAsFixedFormat”. Este método nos permite publicar en PDF o XLS. Tiene una serie de parámetros a configurar, sin embargo vamos a ver los principales.

 
El código a utilizar es el siguiente:
----------------------------------------------------------------------------------------------------
Sub imprimir()

' PabloFSix
' Excelminiapps.blogspot.com

inicio = Range("D14").Value
fin = Range("F14").Value

For i = inicio To fin
             Range("C5").FormulaR1C1 = i

archivo = Range("D17") & "\" & "socio" & Range("C5") & ".pdf"
             ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=archivo

Next
Range("C5") = ""

End Sub
----------------------------------------------------------------------------------------------------
 Comprensión del código:

·         Se definen dos variables, una llamada “inicio” que hace referencia a la celda que contiene el numero de socio de inicio de la impresión y la otra llamada “fin” que hace referencia a la celda que contiene el numero de socio hasta el que deseamos imprimir.

·         Por otro lado se utiliza un “for-next” que hace la recurrencia o el bucle de impresión. Fíjense también que hace que el rango que contiene el número de socio se vaya actualizando antes de proceder a la impresión.

·         El método “ExportAsFixedFormat” que se encuentra dentro del “for-next” tiene ese formato de definición. Se setean dos parámetros el primero es el tipo de archivo, PDF o XLS y el segundo la definición del archivo, es decir el nombre y ubicación. Para eso se definió la variable archivo.

·         Luego al terminar el proceso volvemos a cero el campo “socio n°”.

Como ven es sencillo el procedimiento pero se utiliza otro método diferente del “PrintOut”.

Recuerden que se utiliza un ejemplo para hacer más didáctico el tema, pueden utilizar el método para múltiples aplicaciones.

Espero que les guste la idea. Éxitos!

Keys:



·         Impresión en Excel con macro

·         Publicar en PDF en Excel

·         Exportar a PDF en Excel

·         Print to PDF in EXCEL

18 comentarios:

Agustín Hernández dijo...

Esto me sirvio muchisimo!!!!!! Mucgas gracias.

Tengo un problema, la macro solo funciona si es que los numeros de "socio" (segun el ejemplo de ahora) son consecutivos.
Como puedo hacer para que siga imprimiendo si, por ejemplo, del rango 1 a 6 no está el numero 5?

Gracias!!

Juan Pablo Torres dijo...

Hola amigo, gracias por escribir y tus comentarios!
Para que imprima siempre tienes que tener un Pseudo "ID" con números consecutivos así corre la macro. Si tu tienes un ID, lo que deberías hacer es designarle el Pseudo Id consecutivo. Ejemplo:
--------------------
Pseudo ID ID
1 2
2 6
3 7
4 22
...
---------------------
El pseudo ID es el que utilizaríamos para la macro, puedes incluso ocultarlo. Espero te sirvan nuestros comentarios. Saludos

Virginia de la Fuente dijo...

hola,
me ha sido de mucha utilidad varios de tus tutoriales...
Muchas gracias por todo..

Mogcar dijo...

Muchas gracias por compartir esto que es tan útil.

¿Cómo hacer para que, al construír el nombre del .pdf, pueda agregar más datos variables, por ejemplo, que cada .pdf sea nombrado además de con el número, con el nombre de cada socio?

Juan Pablo Torres dijo...

Hola amigo, cómo estas!

Si revisas el código te darás cuenta que el nombre se forma de esta manera "archivo = Range("D17") & "\" & "socio" & Range("C5") & ".pdf"

Es decir que puedes construir el nombre que quieras cambiando las variables y la concatenación del texto. Espero te haya servido el comentario. Recuerda que también nos puedes escribir directamente desde el formulario de contacto. Saludos

Mogcar dijo...

Muchas gracias por tu respuesta Juan Pablo.

He intentado lo que me sugieres de esta manera:

archivo = Range("S14") & "\" & Range("H6") & " " & Range("S15") & ".pdf"

Donde:
S14 es la ubicación de los .pdf
H6 es mi número consecutivo de socio, (o cliente en mi caso)
S15 contiene el resto del texto que quiero que forme parte del nombre de mi archivo.

Al echar a andar el código, genera el primer archivo y me da un error que dice: "No coinciden los tipos".

¿Qué me falta?

Mogcar dijo...

Hola Juan Pablo,

Nuevamente gracias.

Resolví mi problema poniendo junto el lugar donde se guardará y el nombre del archivo:

archivo = Range("S14")

En S14 está toda la ruta donde quiero guardar el archivo y también el nombre del archivo.

De esta forma se guardan los diferentes archivos en los directorios que les corresponden.

Como en el caso que comenta nuestro amigo Agustín Hernández anteriormente, mis números de socio, no son consecutivos y me gustaría poder brincar aquellos registros que no tienen información.

Saludos y gracias

Juan Pablo Torres dijo...

Gracias por tus comentarios amigo! No nos diste tiempo de responder..
Nos alegra que lo hayas podido solucionar.
Saludos

Carlos Carnero Gálvez dijo...

Juan Pablo me auno a las felicitaciones a tu persona por tan excelente aporte. Te agradecería por favor indicarme la variación del código cuando en una página muestra en vez de uno, cuatro fichas; ya que he intentado adaptarlo a mi archivo pero lamentablemente no he podido lograr el objetivo.

Gracias,

Carlos Carnero Gálvez

Carlos Carnero Gálvez dijo...

Sólo para precisar en la página 2, los items sería 5,6,7 y 8; en la página 3: 9, 10, 11 y 12; y así sucesivamente.

Gracias,

Carlo

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por comentar!
En realidad, como siempre, aquí utilizamos plantillas (las mas simples y representativas posibles) para mostrar la idea y cómo se hace. Nada evita en tu caso que puedas crear varias fichas en una hoja. Por ahí necesitas entender mejor el procedimiento. Sino nos puedes escribir directamente mediante el formulario de contacto. Saludos

Héctor Mata Recuenco dijo...

Hola.

Muchas gracias por el tutorial.
He copiado todo como indicas y al poner en funcionar la macro me dice:

http://s30.postimg.org/592mtckqp/Captura1.jpg

y después si accedo al editor de macros y lo intento poner a funcionar desde ahí me dice:

http://s15.postimg.org/npe0w6ca3/Captura2.jpg

Muchas gracias!
Un saludo

Luis Barrera Sandoval lbarrera72@gmail.com dijo...

Hola. Llevo poco tiempo con macros y se me hace más fácil comprender con los ejemplos mirándolos en los archivos, si se pudiese descargar los ejemplos seria genial. No aparece donde se ponen las macros en tu descripción. Saludos.

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por escribirnos!
En cuanto a tu consulta, sino sabes grabar las macros es mejor que revises algún articulo de los cuales utilizamos macros. Es lo principal que debes saber para empezar, con eso vas a ver que es más fácil todo.
Esperamos tus comentarios.
Saludos

josé Alejandro dijo...

MUUUUUUUUUUCHAAAAASSSSSSS GRACIAS AMIGO EXCELENTE! ME MATÉ BUSCANDO PERO LO ENCONTRÉ! MIL GRACIAS! SALUDOS, ESPERO QUE NOS SIGAS AYUDANDO...

Juan Pablo Torres dijo...

De nada amigo! Gracias por tus comentarios!!!

Daniel Largo Builes dijo...

La solución más elegante, sencilla y útil que he encontrado hasta ahora. Un abrazo desde Colombia y muchas gracias por tan excelente aporte.

Juan Pablo Torres dijo...

Gracias Amigo! Saludos