Excel VBA para imprimir como PDF y guardar con nombre de archivo automático

  • Compartir Este
Hugh West

Exportar un Excel hoja de cálculo como PDF Al cambiar el archivo a formato PDF, podremos imprimirlo y compartirlo con varios contactos profesionales. Los PDF son un estándar fiable para exportar documentos que sentimos la necesidad de compartir con otras personas o dar a conocer. En este artículo, mostraremos algunos ejemplos de VBA para imprimir como PDF y guardar con un nombre de archivo automático.

Descargar el cuaderno de prácticas

Puedes descargarte el cuaderno de ejercicios y practicar con ellos.

VBA Imprimir en PDF.xlsm

9 Ejemplos de Excel VBA para imprimir como PDF y guardar con nombre de archivo automático en Excel

Podemos imprimir fácilmente un archivo Excel como PDF y guardar el archivo con un nombre de archivo automático, utilizando la barra de herramientas de Excel. Pero, sería más fácil con Excel VBA Sólo necesitamos el VBA No necesitamos tantos clics para completar la tarea y esto nos ahorra tiempo.

Visual Basic para aplicaciones ( VBA ) es un modelo de programación y un programa aislado que suele verse en Microsoft Office Es una herramienta analítica, a menudo disponible como Complementos de Excel que optimiza las operaciones manuales, como las tareas monótonas que requieren mucho tiempo. También puede generar CSV Así que vamos a ver algunos ejemplos para imprimir el archivo de Excel como un PDF con el nombre de archivo automático.

1. Imprimir Libro a PDF & Guardar Nombre de Archivo Automáticamente en Excel

Supongamos que queremos imprimir todo el libro de trabajo y guardar el nombre del archivo tal y como ponemos el nombre en nuestro código. Ahora, supongamos que queremos guardar un archivo PDF en nuestro ordenador Disco local (E:) Como podemos ver en la imagen de abajo, la ubicación no contiene ningún archivo pdf. Después de ejecutar el código VBA, podremos ver nuestra deseada PDF en esa ubicación de nuestro PC.

Con Excel VBA los usuarios pueden utilizar fácilmente el código que actúa como menús de Excel desde la cinta de opciones. Para utilizar el código VBA código para imprimir pdf y guardar con un nombre de archivo automático, sigamos el procedimiento.

PASOS:

  • En primer lugar, vaya a la página Desarrollador de la cinta de opciones.
  • En segundo lugar, desde el Código haga clic en Visual Basic para abrir el Editor de Visual Basic O pulse Alt + F11 para abrir el Editor de Visual Basic .

  • En lugar de hacer esto, puede hacer clic con el botón derecho del ratón en la hoja de cálculo e ir a Ver Código Esto también le llevará a Editor de Visual Basic .

  • Aparecerá en el Editor de Visual Basic donde escribimos nuestros códigos para crear una tabla a partir de un rango.
  • En tercer lugar, haga clic en Módulo del Inserte barra de menú desplegable.

  • Esto creará un Módulo en tu cuaderno de trabajo.
  • Y, copia y pega el VBA que se muestra a continuación.

Código VBA:

 Sub Print_Workbook() Dim loc As String loc = "E:\Workbook.pdf" ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, _ filename:=loc End Sub 
  • Ejecute el código pulsando la tecla F5 del teclado.

  • Por último, se puede ver que un nombre de archivo PDF, Cuaderno de trabajo se encuentra ahora en esa ruta en su ordenador. Por lo tanto, eso significa que el nombre del archivo se guarda automáticamente.

  • Y, por último, si vuelves a tu libro de trabajo, podrás ver algunas líneas de puntos. Esto se debe a que el archivo ya está listo para imprimirse.

Explicación del código VBA

 Sub Imprimir_Libro_Trabajo() 

Sub es una parte del código que se utiliza para manejar el trabajo en el código, pero no devolverá ningún valor. También se conoce como subprocedimiento. Así que llamamos a nuestro procedimiento Print_Workbook() .

 loc = "E:\\Workbook.pdf" 

Esta línea es para la ubicación y el nombre del archivo pdf. Aquí, guardamos nuestro archivo en E: en nuestro ordenador y nombrar el archivo Cuaderno de trabajo .

 ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, filename:=loc 

Esta línea de código sirve para exportar el archivo Excel como PDF y dejarlo listo para imprimir.

 Fin Sub 

Esto finalizará el procedimiento.

Más información: Exportar Excel a PDF con hipervínculos (2 métodos rápidos)

2. Guardar automáticamente la hoja de cálculo activa como PDF

Veamos otro ejemplo imprimir una hoja activa a un pdf y guardar el nombre del archivo automáticamente usando Excel VBA .

PASOS:

  • En primer lugar, vaya a la página Desarrolle r de la cinta de opciones.
  • En segundo lugar, haga clic en Visual Basic para abrir el Editor de Visual Basic .
  • Otra forma de abrir el Editor de Visual Basic es simplemente pulsar Alt + F11 .
  • O bien, haga clic con el botón derecho del ratón en la hoja y seleccione Ver Código .
  • A continuación, vaya a Inserte y seleccione Módulo en el menú desplegable.
  • Y, esto abrirá la ventana de visual basic.
  • A continuación, copie y pegue el archivo Código VBA abajo.

Código VBA:

 Sub Print_Sheet() Dim loc As String loc = "E:\Worksheet.pdf" ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _ filename:=loc End Sub 
  • Además, pulse la tecla Tecla F5 o haga clic en el botón Ejecutar Sub para ejecutar el código.

  • Al igual que en el ejemplo anterior, el archivo se guarda como PDF con el nombre de archivo automático.

Si lee ejemplo1 explicación del código, también lo entenderás.

Más información: Macro Excel: Guardar como PDF con Fecha en el Nombre de Archivo (4 Ejemplos Adecuados)

3. Imprimir archivo PDF desde Excel con VBA en Rango

Veamos otro ejemplo de utilización de Excel VBA para imprimir una hoja activa a pdf y guardar el nombre del archivo automáticamente.

PASOS:

  • Para empezar, pulse el botón Desarrollador de la cinta de opciones.
  • En segundo lugar, inicie el Editor de Visual Basic haciendo clic en Visual Basic .
  • También puede acceder a Editor de Visual Basic pulsando Alt + F11 .
  • O, haga clic con el botón derecho del ratón en en la hoja y seleccione Ver Código del menú.
  • A continuación, elija el Módulo en el cuadro desplegable Inserte .
  • Y aparecerá la ventana de Visual Basic.
  • Escribe el código ahí.

Código VBA:

 Sub PrntPDF() ActiveWindow.SelectedSheets.PrintOut Copias:=1, _ Intercalar:=Verdadero, ActivePrinter:="Adobe PDF" Dim fnam As String fnam = Range("B4").Value End Sub 
  • Por último, pulse la tecla Tecla F5 para ejecutar el código.

  • A continuación, podrá ver que se ha añadido a esa ubicación de su ordenador un archivo PDF con el nombre Libro de trabajo. Como resultado, el nombre del archivo se conserva automáticamente.

Más información: Imprimir rango a PDF con VBA en Excel (5 ejemplos más fáciles)

4. Excel VBA para recorrer la hoja seleccionada e imprimir PDF

Echemos un vistazo a otra forma de imprimir en PDF y guardar automáticamente el nombre del archivo.

PASOS:

  • Para empezar, abra la cinta de opciones y seleccione la opción Desarrollador opción.
  • A continuación, para acceder al Editor de Visual Basic haga clic en Visual Basic .
  • Pulsando Alt + F11 también mostrará Editor de Visual Basic .
  • Alternativamente, haga clic con el botón derecho del ratón en la hoja y seleccione Ver Código en el menú que aparece.
  • Ahora, desde el Inserte seleccione Módulo .
  • A continuación, copie y pegue el VBA código que sigue.

Código VBA:

 Sub PrntPDF1() Dim wrksht As Worksheet Dim sht As Variant Set sht = ActiveWindow.SelectedSheets For Each wrksht In sht wrksht.Select wrksht.ExportAsFixedFormat Type:=xlTypePDF, _ filename:=ThisWorkbook.Path & "/" & wrksht.Name & ".pdf" Next wrksht sht.Select End Sub 
  • Ejecute el código pulsando la tecla F5 llave.

  • Como consecuencia, el nombre del archivo se mantiene automáticamente.

Esto guardará el archivo como el número de hoja del libro de trabajo.

Explicación del código VBA

 For Each wrksht In sht wrksht.Select wrksht.ExportAsFixedFormat Type:=xlTypePDF, filename:=EsteLibro.Ruta & "/" & wrksht.Nombre & ".pdf" Next wrksht 

Esta línea de códigos del bucle for es para exportar el archivo excel como pdf e imprimir el archivo.

Más información: Excel VBA: ExportAsFixedFormat PDF con Ajuste a Página (3 Ejemplos)

5. Imprimir en PDF y guardar el nombre del archivo instintivamente en Excel

Ahora, echa un vistazo a otro método de Excel VBA para guardar archivos de Excel a pdf y el nombre del sistema automático de archivos.

PASOS:

  • Para empezar, abra la cinta y seleccione Desarrollador en el menú desplegable.
  • A continuación, seleccione Visual Basic para abrir el Editor de Visual Basic .
  • En Editor de Visual Basic también se puede acceder pulsando Alt + F11 .
  • También puede haga clic con el botón derecho del ratón en la hoja y seleccione Ver Código en el menú emergente.
  • A continuación, seleccione Módulo del Inserte menú desplegable.
  • Además, copie y pegue el siguiente código VBA.

Código VBA:

 Sub PrntPDF2() Dim loc As String loc = "E:\ Hoja6.pdf" ActiveSheet.ExportAsFixedFormat _ Type:=xlTypePDF, _ filename:=loc, _ OpenAfterPublish:=False, _ IncludeDocProperties:=True, _ IgnorePrintAreas:=False, _ Quality:=xlQualityStandard, _ From:=1, To:=2 End Sub 
  • Por último, ejecute el código pulsando F5 en tu teclado y verás el resultado.

  • A continuación verá que Cuaderno de ejercicios PDF Como resultado, el nombre del archivo se mantiene automáticamente.

Del mismo modo, como en el ejemplo anterior, esto también guardará el archivo pdf como el número de hoja.

Explicación del código VBA

 ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, filename:=loc, OpenAfterPublish:=False, IncludeDocProperties:=True, IgnorePrintAreas:=False, Quality:=xlQualityStandard, From:=1, To:=2 

El bloque de código sirve para imprimir y guardar el archivo excel como pdf.

Más información: Imprimir en PDF y enviar por correo electrónico con VBA en Excel (2 casos útiles)

6. Función VBA para Imprimir PDF y Guardar el Nombre del Archivo Automáticamente

Vamos a explorar otra forma de Excel VBA de imprimir en PDF y guardar el nombre del archivo automáticamente. Vamos a utilizar una función y guardar el archivo en PDF en este ejemplo. También utilizamos la función Msgbox para indicarnos si el archivo se ha guardado o no.

PASOS:

  • Al principio, vaya a la Desarrollador tab> Visual Basic > Inserte > Módulo .
  • O, Haga clic con el botón derecho del ratón en en la hoja de cálculo se abrirá una ventana. Desde allí vaya a la pestaña Ver Código .
  • Y, esto le llevará a la Editor de Visual Basic donde podemos escribir Macros VBA .
  • Por otra parte, al pulsar Alt + F11 también abrirá el Editor de Visual Basic .
  • A continuación, escriba VBA código.

Código VBA:

 Sub PrntPDF3() Dim wrks As Worksheet Dim wrkb As Workbook Dim snam As String Dim sloc As String Dim sf As String Dim slocf As String Dim myFile As Variant Dim l As Long On Error GoTo errHandler Set wrkb = ActiveWorkbook Set wrks = ActiveSheet sloc = wrkb.Path If sloc = "" Then sloc = Application.DefaultFilePath End If sloc = sloc & "\" snam = wrks.Range("A1").Value & " Print " &wrks.Range("A2").Value & " PDF " & wrks.Range("A3").Value sf = snam & ".pdf" slocf = sloc & sf If PrintFile(slocf) Then l = MsgBox(vbQuestion + vbYesNo, "File Exists") If l vbYes Then myFile = Application.GetSaveAsFilename(InitialFileName:=slocf, FileFilter:="PDF Files (*.pdf), *.pdf", _ Title:="Save File Name") If myFile "False" Then slocf = myFile Else GoTo exitHandler End IfEnd If End If wrks.ExportAsFixedFormat Type:=xlTypePDF, filename:=slocf, Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False MsgBox "Print PDF: " & vbCrLf & strPathFile exitHandler: Exit Sub errHandler: MsgBox "Not Print" Resume exitHandler End Sub Function PrintFile(rsFullPath As String) As Boolean PrintFile =CBool(Len(Dir$(rsFullPath))> 0) End Function 
  • Y, ejecute el código para ver el resultado pulsando la tecla Tecla F5 .

  • Aparecerá en Msgbox y compruebe que el archivo PDF ya está listo para imprimir.

  • Al igual que antes, observará que ya se ha guardado un archivo PDF del Libro de Trabajo en esa ubicación de su ordenador, por lo que el nombre del archivo se conserva por defecto. A medida que establecemos el nombre del archivo Imprimir PDF guardó el nombre del archivo Imprimir PDF.

Si miras la explicación del código anterior entenderás las líneas del código correctamente. No necesitas cambiar el código, sólo cambia los rangos según tus preferencias. Puedes copiar el código y usarlo para tu propósito de trabajo.

Más información: Macro Excel para Guardar como PDF con Nombre de Archivo desde Valor de Celda (2 Ejemplos)

7. Excel VBA Código para imprimir en PDF y guardar el nombre de archivo automáticamente

Veamos otro método VBA de Excel para imprimir en PDF y almacenar automáticamente el nombre del archivo.

PASOS:

  • Para empezar, vaya a la página Desarrollador de la cinta de opciones.
  • En segundo lugar, en la sección Código, seleccione Visual Basic para lanzar el Editor de Visual Basic Para abrir el Editor de Visual Basic pulse Alt + F11 .
  • También puede hacer clic con el botón derecho del ratón en la hoja de cálculo y seleccionar Ver Código Esto le llevará a la Editor de Visual Basic también.
  • Aparecerá en la pantalla Editor de Visual Basic donde escribiremos el código para generar una tabla a partir de un rango.
  • En tercer lugar, en la barra del menú desplegable Insertar, seleccione Módulo .
  • Y, copia y pega el VBA que se muestra a continuación.

Código VBA:

 Sub PrintPDF4() Dim wrksht As Worksheet Dim wrkbk As Workbook Dim snam As String Dim sloc As String Dim sf As String Dim slocf As String Dim file As Variant On Error GoTo errHandler Set wrkbk = ActiveWorkbook Set wrksht = ActiveSheet sloc = wrkbk.Path If sloc = "" Then sloc = Application.DefaultFilePath End If sloc = sloc & "\" snam = wrksht.Range("A1").Value & " - " &wrksht.Range("A2").Value & " - " & wrksht.Range("A3").Value sf = snam & ".pdf" slocf = sloc & sf wrksht.ExportAsFixedFormat Type:=xlTypePDF, filename:=slocf, Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False MsgBox "Print PDF: " & vbCrLf & strPathFile exitHandler: Exit Sub errHandler: MsgBox "Not Print" ResumeexitHandler End Sub 
  • A continuación, ejecute el código pulsando el botón RubSub o pulsando el botón F5 atajo de teclado.

  • Particularmente, entonces, un Msgbox aparecerá.

  • El archivo se guarda como PDF con el mismo nombre de archivo automatizado que en el ejemplo anterior.

Explicación del código VBA

 sloc = wrkbk.Path If sloc = "" Then sloc = Application.DefaultFilePath End If sloc = sloc & "\" snam = wrksht.Range("A1").Value & " - " & wrksht.Range("A2").Value & " - " & wrksht.Range("A3").Value 

Sirven para obtener la carpeta activa del libro de trabajo si éste se guarda.

 sf = snam & ".pdf" slocf = sloc & sf 

Esto creará el nombre por defecto para guardar los archivos.

 wrksht.ExportAsFixedFormat Type:=xlTypePDF, filename:=slocf, Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False 

Ese bloque sólo exporta el archivo excel a PDF en la carpeta actual.

 MsgBox "Print PDF: " & vbCrLf & strPathFile exitHandler: Exit Sub errHandler: MsgBox "Not Print" Resume exitHandler 

Esto nos permitirá ver un mensaje de confirmación con información del archivo en Microsoft Excel.

Más información: Imprimir en PDF con el botón de macro en Excel (5 variantes de macro)

8. Imprimir una hoja Excel específica con nombre de archivo automático

Veamos un método VBA de Excel diferente para imprimir en PDF y almacenar automáticamente el nombre del archivo.

PASOS:

  • En primer lugar, seleccione el Desarrollador de la cinta de opciones.
  • En segundo lugar, en virtud de la Código seleccione Visual Basic para lanzar el Editor de Visual Basic Alternativamente, pulse Alt + F11 para lanzar el Editor de Visual Basic .
  • En su lugar, haga clic con el botón derecho del ratón en la hoja de cálculo y seleccione Ver Código .
  • Aparecerá en la pantalla Editor de Visual Basic donde escribiremos nuestro código para generar una tabla a partir de un rango.
  • En tercer lugar, seleccione Módulo en la barra del menú desplegable Insertar.
  • Además, copie y pegue el archivo Código VBA abajo.

Código VBA:

 Sub PrintPDF5() Dim loc As String Dim r As Range loc = "E:ArchivoPDF.pdf" Set rng = Sheets("IT").Range("A1:F13") rng.ExportAsFixedFormat Type:=xlTypePDF, _ filename:=loc End Sub 
  • Además, ejecute el código pulsando el botón RubSub o utilizando el botón F5 atajo de teclado.

  • Este archivo se guarda como PDF con el mismo nombre que el ejemplo anterior.

Explicación del código VBA

 Dim loc As String Dim r As Range loc = "E:\Archivo PDF.pdf" Set rng = Sheets("IT").Range("A1:F13") 

Esos bloques de los códigos son para crear y asignar variables.

 rng.ExportAsFixedFormat Type:=xlTypePDF, _ filename:=loc 

Esto guardará una serie de datos de archivo como PDF.

Más información: Cómo convertir Excel a PDF sin perder el formato (5 formas eficaces)

9. Guardar nombre de archivo de forma automática durante la impresión a PDF en Excel VBA

Veamos otro método VBA de Excel para imprimir en PDF y almacenar automáticamente el nombre del archivo.

PASOS:

  • Para empezar, seleccione la opción Desarrollador de la cinta de opciones.
  • Segundo, elige Visual Basic del Código para abrir el Editor de Visual Basic . Haz clic Alt + F11 para lanzar el Editor de Visual Basic .
  • También puede hacer clic con el botón derecho del ratón en la hoja de cálculo y seleccionar Ver Código Esto también le llevará a la Editor de Visual Basic .
  • Ahora, podemos ver el Editor de Visual Basic donde escribiremos el código para crear una tabla a partir de un rango.
  • Además, seleccione Módulo del Inserte barra de menú desplegable.
  • A continuación, copie y pegue el archivo VBA código que sigue.

Código VBA:

 Sub Prnt_PDF() Call Nombre_Automatico End Sub Function Nombre_Automatico() As Boolean ' Copia las hojas en un nuevo archivo PDF para enviarlo por correo electrónico Dim sht As String, file As String, loc As String Dim s As String Application.ScreenUpdating = False sht = ActiveSheet.Name file = ActiveWorkbook.Name loc = ActiveWorkbook.Path s = loc & "\" & sht & ".pdf" On Error Resume NextActiveSheet.PageSetup.PrintQuality = 600 err.Clear On Error GoTo 0 On Error GoTo RefLibError ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, filename:=s, Quality:=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=True On Error GoTo 0 SaveOnly: MsgBox "Guardado como archivo .pdf: " & vbCrLf & vbCrLf & SvAs & _ "Revisar el documento .pdf".Automatic_Name = True Ir a EndMacro RefLibError: MsgBox "Unable to save as PDF." Automatioc_Name = False EndMacro: End Function 
  • El código se ejecutará pulsando el botón RubSub o utilizando el botón F5 atajo de teclado.

Explicación del código VBA

 sht = ActiveSheet.Name file = ActiveWorkbook.Name loc = ActiveWorkbook.Path s = loc & "\" & sht & ".pdf" 

Para obtener el archivo como un pdf y guardar el nombre del pdf.

 On Error Resume Next ActiveSheet.PageSetup.PrintQuality = 600 err.Clear On Error GoTo 0 

Esto sólo ajusta la calidad de impresión.

 On Error GoTo RefLibError ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, filename:=s, Quality:=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=True On Error GoTo 0 SaveOnly: MsgBox "Guardado como archivo .pdf: " & vbCrLf & vbCrLf & SvAs & _ "Revisar el documento .pdf." Automatic_Name = True GoTo EndMacro RefLibError: MsgBox "Imposible guardar comoPDF" Automatioc_Name = False 

Esas líneas indicarán al usuario cómo enviar el archivo para imprimirlo como pdf.

Más información: Cómo guardar Excel como PDF sin cortes (4 formas adecuadas)

Conclusión

Los métodos anteriores le ayudarán a realizar ese trabajo desde Imprimir a PDF y guardar nombre de archivo automático en Excel VBA Si tiene alguna pregunta, sugerencia o comentario, no dude en hacérnoslo saber en la sección de comentarios. También puede echar un vistazo a nuestros otros artículos de la sección ExcelWIKI.com ¡blog!

Hugh West es un capacitador y analista de Excel altamente experimentado con más de 10 años de experiencia en la industria. Tiene una Licenciatura en Contabilidad y Finanzas y una Maestría en Administración de Empresas. Hugh tiene una pasión por la enseñanza y ha desarrollado un enfoque de enseñanza único que es fácil de seguir y comprender. Su conocimiento experto de Excel ha ayudado a miles de estudiantes y profesionales en todo el mundo a mejorar sus habilidades y sobresalir en sus carreras. A través de su blog, Hugh comparte su conocimiento con el mundo, ofreciendo tutoriales gratuitos de Excel y capacitación en línea para ayudar a las personas y empresas a alcanzar su máximo potencial.