La generación de reportes en Excel es un tema muy común hoy en día, diversas áreas en las empresas la usan para facilitar la interpretación de información a partir de una gran cantidad de datos recabados en el tiempo de funcionamiento de la empresa. Estos reportes generalmente son enviados como archivo completo de Excel, lo cual no resulta conveniente por el peso del archivo o la probabilidad de que el usuario modifique los datos que se han recopilado y usado en la generación de dichos reportes.
Para estos inconvenientes se ha visto en la necesidad de generar reportes con formato pdf a partir del uso de las macros. El código es de gran utilidad ya que simplemente se tiene que dar click a un botón para generar el reporte en formato pdf dándonos la ventaja de no tener que adjuntar el archivo para enviarlo por correo, simplemente se enviará el archivo pdf.
Crear PDF con la hoja activa
El objetivo ya planteado es crear un archivo PDF con la información que se tiene en la hoja activa, en este caso usaremos la tabla de la hoja “Atenciones”. Para esta acción se usarán conceptos ya usados anteriormente como conceptos nuevos en la sintaxis que se explicarán posteriormente.
El código usado en este caso es el siguiente:
Sub CrearPDF()
Dim NombreArchivo, RutaArchivo As String
NombreArchivo = ActiveSheet.Name
RutaArchivo = ActiveWorkbook.Path & "\" & NombreArchivo & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=RutaArchivo, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=False
End Sub
En primer lugar, se iniciará un nuevo procedimiento con el nombre de "CrearPDF" para poder identificar a la macro. Luego se procede a nombrar los distintos tipos de variables que se van a usar y se definen los valores que tomara cada variable.
-NombreArchivo : Tomará como valor el nombre de la hoja activa.
-“Ruta de Archivo” : Tomará el valor de la ruta de archivo donde se guardará el nuevo archivo en pdf .
-ActiveWorkbook.Path : Se refiere al directorio donde se ubica el libro con el cual se está trabajando
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF : Sintaxis referida a la exportación de la hoja activa como formato pdf.
El código seguido se refiere al formato básico que llevará el nuevo archivo con respecto a la calidad, propiedades del documento, área de impresión y la acción de abrir luego de crear el archivo.
Exportar varias hojas de Excel a PDF
A continuación, se muestra el código usado para crear archivos pdf por cada hoja del libro con el cual se está trabajando:
Sub CreaPDFhojas()
Dim hoja As Worksheet
Dim NombreArchivo, RutaArchivo As String
For Each hoja In Worksheets
NombreArchivo = hoja.Name
RutaArchivo = ActiveWorkbook.Path & "\" & NombreArchivo & ".pdf"
hoja.ExportAsFixedFormat Type:=xlTypePDF, Filename:=RutaArchivo, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=False
Next hoja
End Sub
Se ha usado la instrucción del For Next para poder iterar la creación de archivos pdf para cada una de las hojas de un libro. Esto nos permite el ahorro de tiempo al momento de tener un archivo de Excel con numerosas hojas que se desean llevar a formato pdf.
RECOMENDACIONES: No tener archivos pdf con los mismos nombres de las hojas del archivo Excel con el que se quiere trabajar.
Puede ver el código completo de la macro en el archivo de Excel adjunto: Exportar varias hojas de Excel a PDF VBA
Por: Luis Flores Saenz
07/10/2020 a las 7:34 am
Muy Interesante. Felicitaciones
17/12/2020 a las 11:30 am
Me gustaría crear un sólo pdf con varias hojas del excel. Gracias.
07/12/2021 a las 12:16 pm
Una pregunta como le hago para añadir el nombre del libro y el del la hoja?
lo intenté con:
NombreArchivo = ActiveWorkbook.Name & hoja.Name
y me sale así:
ProyectoE732.xlsCALCULOS.PDF
Como le quito el .xls?