No son pocas las ocasiones en las que necesitamos exportar el contenido de una o varias hojas de trabajo de nuestro fichero Excel hacia un archivo pdf. En este apartado te enseñaremos como lo puedes hacer de una forma rápida y sencilla, usando la función ExportAsFixedFormat.
Código VBA de ejemplo para exportar a pdf la hoja activa de Excel
A continuación te mostramos un código sencillo para exportar la hoja (worksheet) activa a pdf, usando la función ExportAsFixedFormat. Si sustituyes la palabra ActiveSheet por el nombre de tu hoja de preferencia este código también te funcionará:
Sub ExportAsPDF ()
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=”Test”, _
OpenAfterPublish:=False, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
Quality:=xlQualityStandard, _
From:=1, To:=2
End Sub
Como puedes observar, la función ExportAsFixedFormat posee varios atributos, la mayoría opcionales, los cuales te describimos en la siguiente tabla:
Nombre Atributo | Requerido/Opcional | Descripcion |
Type | Requerido | Puede ser xlTypePDF o xlTypeXPS. |
Filename | Opcional | Nombre del archivo. Puedes indicar el Full Path. Si no lo indicas el archivo se guardará en el directorio actual de trabajo. |
OpenAfterPublish | Opcional | Puede tomar valores True o False. Si el valor es True, el pdf se abrirá inmediatamente después de que sea creado. |
IncludeDocProperties | Opcional | Puede tomar valores True o False. Si el valor es True, el pdf tomará las propiedades del archivo Excel. |
IgnorePrintAreas | Opcional | Puede tomar valores True o False. Si el valor es True, el pdf ignorará las áreas de impresión configuradas en Excel, de lo contrario las tomará. |
Quality | Opcional | Se refiere a la calidad de la exportación. Puede ser xlQualityStandard o xlQualityMinimum. |
From | Opcional | Valor entero que indica a partir de cual página se exportará el documento. El valor por defecto es 1. |
To | Opcional | Valor entero que indica la última página a tomar en cuenta para la exportación. Si este valor es omitido, Excel considerará exportar hasta la última página. |
Código VBA de ejemplo para exportar a pdf todas las hojas del libro de trabajo
El siguiente código permite exportar todas las hojas de un fichero Excel a pdf. Nótese que en este caso el archivo pdf será guardado en la misma ruta donde tenemos nuestra macro.
Sub ExportActiveWorkbookAsPDF()
Dim strFileName As String
strFileName = ThisWorkbook.Path & "\Test.pdf" 'Nombre y ruta del archivo exportado
'Exporta el archivo como PDF
ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:= strFileName
End Sub
Código VBA de ejemplo para exportar a pdf un Rango seleccionado
En el caso de que necesitemos exportar solo un rango específico dentro de una worksheet, podemos usar el código a continuación, en donde el rango a exportar es almacenado en la variable strRange:
Sub ExportRangeAsPDF()
Dim strFileName As String
Dim stRange as Range
strFileName = ThisWorkbook.Path & "\Test.pdf" 'Nombre y ruta del archive exportado
Set strRange = Range("A1:C20") 'Rango a Exportar
'Exporta el rango como PDF
strRange.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:= strFileName
End Sub
Código VBA de ejemplo para exportar a pdf una gráfica o forma seleccionada
Si lo que necesitas es exportar tus gráficos o shapes a pdf entonces el código que aquí te mostramos te funcionará. El gráfico de interés es en primer lugar almacenado en la variable cht y luego exportado a pdf.
Sub SaveChartAsPDF()
Dim strFileName As String
Dim cht As Chart
strFileName = ThisWorkbook.Path & "\Test.pdf" 'Nombre y ruta del archivo exportado
Set cht = Sheets("Hoja1").ChartObjects("Chart 1").Chart
'Exporta la selección a un PDF
cht.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:= strFileName
End Sub
Código VBA de ejemplo para exportar a pdf varias hojas seleccionadas
En el caso que desees exportar solo algunas hojas seleccionadas de un fichero Excel, te recomendamos en un primer paso crear un Array con las hojas de interés, para poder seleccionarlas y posteriormente usar la instrucción ExportAsFixedFormat, tal y como te mostramos en el siguiente ejemplo:
Sub SelectSheetsAndSaveAsPDF()
Dim strFileName As String
Dim sheetArray As Variant
strFileName = ThisWorkbook.Path & "\Test.pdf" 'Nombre y ruta del archivo exportado
sheetArray = Array("Hoja1", "Hoja2")
'Selecciona varias hojas para exportarlas a PDF
Sheets(sheetArray).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:= strFileName
End Sub
Quieres saber más? Contáctanos…