Cómo guardar Excel como PDF con VBA (10 ejemplos)

Índice
  1. Guardar libros, hojas, gráficos y rangos de Excel como PDF
    1. Guardar hoja activa como PDF
    2. Guardar libro activo como PDF
    3. Guardar selección como PDF
    4. Guardar un rango como PDF
    5. Guardar un gráfico como PDF
    6. Adaptando el código a su escenario
    7. Notas para guardar documentos PDF
  2. Seleccionar hojas de trabajo específicas antes de guardarlas como PDF
  3. Realizar bucles y guardar como archivos PDF separados
    1. Recorrer las hojas
    2. Recorrer las hojas seleccionadas
    3. Recorrer gráficos
  4. Otras opciones de impresión de PDF
    1. VBA Guardar en PDF Ejemplo usando todas las opciones
  5. Otros formatos fijos disponibles (xlTypeXPS)
  6. Conclusión

Desde Excel 2010, es posible guardar Excel como PDF. El formato PDF era y sigue siendo uno de los formatos de archivo más comunes para distribuir documentos.

Los ejemplos de código siguientes proporcionan las macros de VBA para automatizar la creación de archivos PDF desde Excel utilizando el método ExportAsFixedFormat. Esto significa que no necesita tener instalada una impresora PDF, ya que Excel puede imprimir directamente en un documento PDF.

Tabla de contenido
  • Guardar libros, hojas, gráficos y rangos de Excel como PDF
    • Guardar hoja activa como PDF
    • Guardar libro activo como PDF
    • Guardar selección como PDF
    • Guardar un rango como PDF
    • Guardar un gráfico como PDF
    • Adaptando el código a su escenario
    • Notas para guardar documentos PDF
  • Seleccionar hojas de trabajo específicas antes de guardarlas como PDF
  • Realizar bucles y guardar como archivos PDF separados
    • Recorrer las hojas
    • Recorrer las hojas seleccionadas
    • Recorrer gráficos
  • Otras opciones de impresión de PDF
    • VBA Guardar en PDF Ejemplo usando todas las opciones
  • Otros formatos fijos disponibles (xlTypeXPS)
  • Conclusión

Los códigos de ejemplo se pueden utilizar de forma independiente o como parte de un proceso de automatización más amplio. Por ejemplo, consulte esta publicación para ver un ejemplo de cómo recorrer una lista e imprimir un PDF para cada elemento: Crear varios archivos PDF basados ​​en una lista

En lugar de pasar de Excel a PDF, es posible que desees ir al revés; de PDF a Excel. Consulte estas publicaciones para conocer posibles soluciones para ese escenario:

  • Cómo importar archivos PDF a Excel con Power Query
  • Obtener datos de PDF a Excel

Descargue el archivo de ejemplo: únase al programa Insiders gratuito y obtenga acceso al archivo de ejemplo utilizado para esta publicación.

Nombre del archivo: 0019 Guardar Excel como PDF con VBA.zip

Tener acceso

Guardar libros, hojas, gráficos y rangos de Excel como PDF

Esta sección contiene el código base para guardar Excel como PDF desde diferentes objetos (libros de trabajo, hojas de trabajo, rangos y gráficos). Desde una perspectiva de VBA, es el método ExportAsFilxedFormat combinado con la propiedad Tipo establecida en xlTypePDF lo que crea un PDF.

Guardar hoja activa como PDF

El siguiente código guarda las hojas seleccionadas como un único PDF.

Sub SaveActiveSheetsAsPDF()'Create and assign variablesDim saveLocation As StringsaveLocation = "C:UsersmarksOneDriveDocumentsmyPDFFile.pdf"'Save Active Sheet(s) as PDFActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _    Filename:=saveLocationEnd Sub

Guardar libro activo como PDF

Utilice la siguiente macro para guardar todas las hojas visibles de un libro.

Sub SaveActiveWorkbookAsPDF()'Create and assign variablesDim saveLocation As StringsaveLocation = "C:UsersmarksOneDriveDocumentsmyPDFFile.pdf"'Save active workbook as PDFActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, _    Filename:=saveLocationEnd Sub

Guardar selección como PDF

A veces, solo queremos guardar una pequeña parte de una hoja de trabajo en un PDF. El siguiente código imprime solo las celdas seleccionadas.

Sub SaveSelectionAsPDF()'Create and assign variablesDim saveLocation As StringsaveLocation = "C:UsersmarksOneDriveDocumentsmyPDFFile.pdf"'Save selection as PDFSelection.ExportAsFixedFormat Type:=xlTypePDF, _    Filename:=saveLocationEnd Sub

Guardar un rango como PDF

La siguiente macro guarda un rango específico como PDF.

Sub SaveRangeAsPDF()'Create and assign variablesDim saveLocation As StringDim ws as WorksheetDim rng As RangesaveLocation = "C:UsersmarksOneDriveDocumentsmyPDFFile.pdf"Set ws = Sheets("Sheet1")Set rng = ws.Range("A1:H20")'Save a range as PDFrng.ExportAsFixedFormat Type:=xlTypePDF, _Filename:=saveLocationEnd Sub

Guardar un gráfico como PDF

El siguiente código VBA guarda un gráfico específico como PDF.

Sub SaveChartAsPDF()'Create and assign variablesDim saveLocation As StringDim ws As WorksheetDim cht As ChartsaveLocation = "C:UsersmarksOneDriveDocumentsmyPDFFile.pdf"Set ws = Sheets("Sheet1")Set cht = ws.ChartObjects("Chart 1").Chart'Save a chart as PDFcht.ExportAsFixedFormat Type:=xlTypePDF, _    Filename:=saveLocationEnd Sub

En lugar de nombrar un gráfico específico, la macro podría ejecutarse en función del gráfico activo. Cambia esto:

Set cht = ws.ChartObjects("Chart 1").Chart

A esto:

Set cht = ActiveChart

Adaptando el código a su escenario

Para adaptar los ejemplos de código a sus necesidades específicas, debe ajustar ciertas líneas de código.

Cambiar la ubicación para guardar

Para guardar el archivo en la ubicación correcta, cambie esta lista de códigos:

saveLocation = "C:UsersmarksOneDriveDocumentsmyPDFFile.pdf"

Si prefiere que la ubicación para guardar se incluya en una celda, cambie el código para que haga referencia a la hoja y la celda que contiene la ruta del archivo.

saveLocation = Sheets("Sheet1").Range("B2").Value

cambiar la hoja de trabajo

En esta línea de código, cambie el texto "Hoja1" por el nombre de la hoja en su libro.

Set ws = Sheets("Sheet1")

cambiar el rango

La siguiente línea de códigos hace referencia al rango que se imprimirá en PDF.

Set rng = ws.Range("A1:H20")

cambiar el gráfico

Para imprimir un gráfico en PDF, cambie el nombre del gráfico en la siguiente línea de código.

Set cht = ws.ChartObjects("Chart 1").Chart

Si no está seguro del nombre del gráfico, se muestra en el cuadro Nombre cuando se selecciona el gráfico.

Notas para guardar documentos PDF

Si bien la propiedad Nombre de archivo es opcional, es importante saber dónde se guarda el archivo.

  • Si no se proporciona la propiedad Nombre de archivo, el PDF se guarda en la ubicación de su carpeta predeterminada usando el nombre del libro de Excel con la extensión de archivo .pdf.
  • Cuando se proporciona un nombre de archivo, pero no una ruta de archivo, el documento se guarda en la ubicación de su carpeta predeterminada con el nombre proporcionado.
  • Cuando no se proporciona la extensión de archivo .pdf, el sufijo se agrega automáticamente.
  • Si existe un PDF en la ubicación para guardar especificada, el archivo existente se sobrescribe. Por lo tanto, puede ser necesario incluir procedimientos de manejo de archivos para evitar sobrescribir documentos existentes y errores de manejo.
  • Para guardar como formato de documento XPS, cambie xlTypePDF por xlTypeXPS .

Seleccionar hojas de trabajo específicas antes de guardarlas como PDF

Si hay más de una hoja de trabajo activa, el PDF creado incluye todas las hojas activas. El siguiente código selecciona varias hojas de trabajo de una matriz antes de guardar el PDF.

Sub SelectSheetsAndSaveAsPDF()'Create and assign variablesDim saveLocation As StringDim sheetArray As VariantsaveLocation = "C:UsersmarksOneDriveDocumentsmyPDFFile.pdf"sheetArray = Array("Sheet1", "Sheet2")'Select specific sheets from workbook, the save all as PDFSheets(sheetArray).SelectActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _    Filename:=saveLocationEnd Sub

En el código anterior, se utiliza una matriz para seleccionar las hojas específicas. Alternativamente, la función Dividir matriz con una cadena de texto podría proporcionar una solución más dinámica. Este método se trata aquí: VBA Arrays .

Realizar bucles y guardar como archivos PDF separados

Para guardar varios archivos PDF rápidamente, podemos usar VBA para recorrer hojas o gráficos y guardar cada uno individualmente.

Recorrer las hojas

La siguiente macro recorre cada hoja de trabajo del libro activo y guarda cada una como su propio PDF. Cada PDF se guarda en la misma carpeta que el libro de trabajo, donde el nombre de cada PDF se basa en el nombre de la hoja de trabajo.

Sub LoopSheetsSaveAsPDF()'Create variablesDim ws As Worksheet'Loop through all worksheets and save as individual PDF in same folder'as the Excel fileFor Each ws In ActiveWorkbook.Worksheets    ws.ExportAsFixedFormat Type:=xlTypePDF, _        Filename:=ThisWorkbook.Path  "/"  ws.Name  ".pdf"NextEnd Sub

Recorrer las hojas seleccionadas

La siguiente macro recorre solo las hojas de trabajo seleccionadas en el libro activo y guarda cada una como su propio PDF.

Sub LoopSelectedSheetsSaveAsPDF()'Create variablesDim ws As WorksheetDim sheetArray As Variant'Capture the selected sheetsSet sheetArray = ActiveWindow.SelectedSheets'Loop through each selected worksheetFor Each ws In sheetArray    ws.Select    ws.ExportAsFixedFormat Type:=xlTypePDF, _        Filename:=ThisWorkbook.Path  "/"  ws.Name  ".pdf"Next ws'Reselect the selected sheetssheetArray.SelectEnd Sub

Recorrer gráficos

El siguiente código recorre cada gráfico de la hoja activa y los guarda como un PDF independiente.

Sub LoopChartsSaveAsPDF()'Create and assign variablesDim chtObj As ChartObjectDim ws As WorksheetSet ws = ActiveSheet'Loop through all charts and save as individual PDF in same folder'as the Excel fileFor Each chtObj In ws.ChartObjects    chtObj.Chart.ExportAsFixedFormat Type:=xlTypePDF, _        Filename:=ThisWorkbook.Path  "/"  chtObj.Name  ".pdf"Next chtObjEnd Sub

Otras opciones de impresión de PDF

Cuando se utiliza ExportAsFixedFormat, hay otras configuraciones opcionales disponibles:

'Open the document after it is saved - options are True /FalseOpenAfterPublish:=False'Include the Excel document properties into the PDF - options are True /FalseIncludeDocProperties:=True'Does the created PDF adhere to the Print Areas already set in the 'worksheet - options are True /FalseIgnorePrintAreas:=False'Set the output quality of the created document - options are 'xlQualityMinimum / xlQualityStandardQuality:=xlQualityStandard'The page to start printing. If excluded, will start from the first pageFrom:=1'The page to print to. If excluded, will go to the last pageTo:=2

VBA Guardar en PDF Ejemplo usando todas las opciones

El siguiente código demuestra cómo utilizar todas las opciones dentro de una sola macro. Estas opciones se pueden adaptar para satisfacer sus necesidades.

Sub SaveAsPDFOptions()Dim saveLocation As StringsaveLocation = "C:UsersmarksDocumentsmyPDFFile.pdf"'Example using all the optionsActiveSheet.ExportAsFixedFormat _    Type:=xlTypePDF, _    Filename:=saveLocation, _    OpenAfterPublish:=False, _    IncludeDocProperties:=True, _    IgnorePrintAreas:=False, _    Quality:=xlQualityStandard, _    From:=1, To:=2End Sub

Otros formatos fijos disponibles (xlTypeXPS)

La propiedad Tipo también puede crear documentos XPS cuando se establece en xlTypeXPS en lugar de xlTypePDF. XPS es el formato de archivo fijo de Microsoft; Es similar al PDF pero basado en el lenguaje XML. Rara vez se utiliza en el mundo real, pero es una opción si es necesario.

Conclusión

Aprender a guardar Excel como PDF es una buena inversión de tiempo. Cada uno de estos fragmentos de código por sí solo es útil. Sin embargo, los ejemplos de código anteriores se pueden utilizar en otras automatizaciones para ahorrar aún más tiempo.

Artículos Relacionados:

  • Excel: cree varios archivos PDF basados ​​en una lista
  • Recorrer hojas seleccionadas con VBA
  • Cómo recorrer cada elemento de la lista de validación de datos con VBA

Deja una respuesta

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

Subir

Este sitio web utiliza cookies para mejorar la experiencia del usuario y garantizar un funcionamiento eficiente. Al utilizar nuestro sitio web, aceptas todas las cookies de acuerdo con nuestra política de cookies. Leer mas...