Guarde el rango de Excel como PDF usando VBA

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 () Distancia.ExportAsFixedFormat Tipo: = xlTypePDF, Nombre del archivo:= _ "C: \ Usuarios \ nombre_archivo", 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.

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

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

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

Ejemplo: imprima un 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 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".

Este recibo cubre el rango "A2: L21". Ya configuré el área de impresión.

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 'Rango de configuración que se imprimirá Establecer invoiceRng = Range ("A1: L21")' nombre de archivo de configuración con una marca de tiempo. pdfile = "factura" & "_" & Formato (Ahora (), "aaaammdd_hhmmss") & ".pdf" 'configurando el nombre completo. El pdf resultante se guardará donde exista el archivo principal. 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.

Guarde el rango de Excel como PDF usando 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.

Establecer invoiceRng = Rango ("A1: L21") 

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

pdfile = "factura" & "_" & Formato (Ahora (), "aaaammdd_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, establecemos 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 Verdadero.

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.

Imprima múltiples selecciones en una hoja usando VBA en Microsoft Excel | Seleccione varios rangos e imprima cada rango en una hoja diferente usando VBA.

Imprima todos los libros de trabajo en una carpeta usando VBA en Microsoft Excel | Use este código VBA para imprimir y guardar cada libro de Excel en una carpeta usando.

Articulos populares:

Divida la hoja de Excel en varios archivos según la columna mediante 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.

Desactivar los mensajes de advertencia mediante VBA en Microsoft Excel 2016 | Para desactivar los mensajes de advertencia que interrumpen el código VBA en ejecución, usamos la clase Application.

Agregar y guardar un libro nuevo con VBA en 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 …

Va a ayudar al desarrollo del sitio, compartir la página con sus amigos

wave wave wave wave wave