Para guardar un rango seleccionado en Excel (digamos un recibo) como PDF en Excel usando VBA, use la siguiente sintaxis.

El código genérico

Sub SaveRangeAsPDF()

Range.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _

"C:\Users\file_name", Quality:=xlQualityStandard, _

IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True

End Sub

El código anterior es un código genérico para guardar un rango fijo como un documento PDF. Cuando su macro de registro mientras exporta Excel a PDF, aparecerá un código similar.

Rango: * Puede ser un rango fijo, un rango dinámico o una selección. Necesitas definirlo.

Nombre de archivo: este es el nombre completo de pdf. Defínalo como una cadena.

El resto de variables se pueden dejar como están. Los he explicado después de un ejemplo.

Ejemplo: Imprimir recibo de Excel como PDF usando VBA Supongamos que tiene que imprimir y enviar recibos en Excel de forma regular. En ese caso, le gustaría que se automatizara. No querrá hacer la exportación de Excel a PDF una y otra vez. Si solo pudiera usar un botón para hacer esto, sería útil, ¿no es así?

Aquí, he diseñado este formato de recibo. Quiero imprimirlo / guardarlo / exportarlo como pdf usando el botón «Crear PDF».

imageThis receipt covers the range «A2:L21». I have already set the print area.

image

Para guardar en este rango de Excel como PDF, usaremos el código VBA genérico mencionado anteriormente para exportar la hoja de Excel a PDF. Ajustaremos el código según nuestro requisito.

Sub PrintSelectionToPDF()

Dim invoiceRng As Range

Dim pdfile As String

'Setting range to be printed

Set invoiceRng = Range("A1:L21")

'setting file name with a time stamp.

pdfile = "invoice" & "_" & Format(Now(), "yyyymmdd_hhmmss") & ".pdf"

'setting the fulli qualified name. The resultent pdf will be saved where the main file exists.

pdfile = ThisWorkbook.Path & strfile

invoiceRng.ExportAsFixedFormat Type:=xlTypePDF, _

Filename:= pdfile, _

Quality:= xlQualityStandard, _

IncludeDocProperties:=True, _

IgnorePrintAreas:=False, _

OpenAfterPublish:=False

End Sub

Usando el código:

Copie el código anterior en su archivo de recibo abriendo el editor de VBA (use Alt + F11). Ajuste el rango y la ruta del archivo (si lo desea) en el código que desea imprimir. Puede descargar el archivo de trabajo a continuación.

`enlace: /wp-content-uploads-2019-12-Save-Excel-Range-as-PDF-using-VBA.xls [

image 48Save Excel Range as PDF using VBA]

Explicación:

Dim invoiceRng As Range

Dim pdfile As String

El código es simple. Primero, hemos creado dos variables. «InvoiceRng as Range» para el rango / hoja que queremos guardar como pdf. strFile para el nombre de archivo completo del PDF resultante.

Set invoiceRng = Range("A1:L21")

Dado que nuestro rango de impresión es fijo, establecemos el rango de la factura como Rango («A1: L21»).

pdfile = "invoice" & "_" & Format(Now(), "yyyymmdd_hhmmss") & ".pdf"

pdfile = ThisWorkbook.Path & strfile

En las dos líneas anteriores, primero nombramos el archivo con una marca de tiempo y luego lo agregamos a la ruta del archivo principal. Como resultado, pdfile contiene el nombre completo del archivo pdf resultante.

invoiceRng.ExportAsFixedFormat _

Type:=xlTypePDF, _

Filename:= pdfile, _

Quality:= xlQualityStandard, _

IncludeDocProperties:=True, _

IgnorePrintAreas:=True, _

OpenAfterPublish:=False

Finalmente, usamos el método ExpoortAsFixedFormat de la clase Range para imprimir el rango definido de Excel como PDF. Definimos el tipo como xlTypePDF. Otra opción es xlTypeXPS, que guardará el rango seleccionado como archivo XPS.

Configuramos el nombre de archivo como archivo pdf, que contiene la cadena del nombre completo del archivo pdf. Puede escribir un texto codificado aquí o personalizarlo según sus necesidades.

A continuación, establecemos la calidad del archivo PDF como xlQualityStandard. Tenemos otra opción como xlQualityMinimum.

A continuación, establecemos IncludeDocProperties como True. Significa que el PDF resultante tendrá las propiedades de un documento.

Luego establecemos IgnorePrintAreas como True. Significa que ignorará cualquier área de impresión ya configurada.

Finalmente, configuramos OpenAfterPublish como False. Significa que el archivo que crea no se abrirá automáticamente. Lo configuré como falso porque creo cientos de archivos usando un bucle y no quiero que se abran. Si desea abrir el archivo después de crearlo con Excel, configúrelo como True.

Uso de imprimir el rango seleccionado como pdf

Un uso básico es imprimir el rango seleccionado con solo hacer clic en un botón. Pero el mejor uso es usarlo en un bucle en el que necesite crear varios recibos para diferentes clientes. Cree un sub para completar los datos y luego use este código para imprimir el rango seleccionado en un bucle.

Así que sí, chicos, así es como pueden guardar el rango seleccionado como pdf. Espero que te haya sido de utilidad. Si aún tiene alguna duda o consulta con respecto a la impresión en Excel usando VBA, pregunte en la sección de comentarios a continuación.

Artículos relacionados:

link: / printing-in-vba-print-all-workbooks-in-a-folder-using-vba-in-microsoft-excel [Imprimir todos los libros de trabajo en una carpeta usando VBA en Microsoft Excel] | Utilice este código VBA para imprimir y guardar cada libro de Excel en una carpeta usando.

Artículos populares:

link: / general-topics-in-vba-split-excel-sheet-into-multiple-files-based-on-column-using-vba [Dividir hoja de Excel en varios archivos según la columna usando VBA] | Esta hoja de Excel dividida en código VBA se basa en valores únicos en una columna específica.

Descarga el archivo de trabajo.

link: / general-topics-in-vba-turn-off-warning-messages-using-vba-in-microsoft-excel [Desactivar mensajes de advertencia usando VBA en Microsoft Excel 2016] | Para desactivar los mensajes de advertencia que interrumpen el código VBA en ejecución, usamos la clase Application.

link: / files-workbook-and-worksheets-in-vba-add-and-save-new-workbook-using-vba-in-microsoft-excel [Add And Save New Workbook Using VBA In Microsoft Excel 2016] | Para agregar y guardar libros de trabajo usando VBA usamos la clase Workbooks. Workbooks.Add agrega un nuevo libro fácilmente, sin embargo …​