Cómo crear un archivo PDF usando VBA?

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 AtributoRequerido/OpcionalDescripcion
TypeRequeridoPuede ser xlTypePDF o xlTypeXPS.
FilenameOpcionalNombre del archivo. Puedes indicar el Full Path. Si no lo indicas el archivo se guardará en el directorio actual de trabajo.
OpenAfterPublishOpcionalPuede tomar valores True o False. Si el valor es True, el pdf se abrirá inmediatamente después de que sea creado.
IncludeDocPropertiesOpcionalPuede tomar valores True o False. Si el valor es True, el pdf tomará las propiedades del archivo Excel.
IgnorePrintAreasOpcionalPuede 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á.
QualityOpcionalSe refiere a la calidad de la exportación. Puede ser xlQualityStandard o xlQualityMinimum.
FromOpcionalValor entero que indica a partir de cual página se exportará el documento. El valor por defecto es 1.
ToOpcionalValor 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…

Cómo crear un archivo PDF usando VBA?

También te puede interesar

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *