La generación de reportes en excel es el pan de cada día, especialmente en lo referente a Formatos Contables, pero no siempre es conveniente enviar un archivo completo cuando te piden un reporte y lo tienes que adjuntar en un correo, para resolver esto veremos como generar archivos PDF con una macro excel.
La idea es muy simple, al dar click en un Botón se debe generar un archivo PDF de la hoja activa o de alguna hoja en especifico.
El código es realmente simple pero muy potente y sobre todo de gran utilidad, con el hecho de que simplemente tienes que dar click en un botón para generar tu reporte en formato PDF vale la pena, ademas de la gran ventaja de no tener que adjuntar tu archivo para enviar por correo.
Option Explicit
Sub CreaPDF()
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
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
Uno de los usos mas comunes de excel es en la contabilidad, así que estoy seguro que los contadores sacaran un gran provecho de esta pequeña macro adaptando la a sus necesidades.
Un ejemplo de adaptación es la segunda macro que se ve en el vídeo y en esta imagen, en ese caso se usa un ciclco para recorrer las hojas de libro y generar un PDF por cada una de ellas, obviamente en la mayoría de los casos la generación de los PDF sera selectiva, para ello simplemente se adapta la primera macro para cada hoja que deba convertirse a PDF, pero esa segunda macro también puede ser de mucha ayuda en algunos casos particulares.