Cómo guardar Excel como PDF con VBA (10 ejemplos)
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