VBA Guardar Como (imprimir) en PDF
Last updated on marzo 3, 2022
Este tutorial demostrará cómo guardar / imprimir en un PDF en Excel VBA.
Imprimir en PDF
Este sencillo procedimiento imprimirá la ActiveSheet en un PDF.
Sub imprimir_en_PDF()
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="demo.pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=True
End Sub
También he creado una función con manejo de errores, etc. que imprimirá la ActiveSheet en un PDF:
Sub ImprimirPDF()
Call guardar_PDF
End Sub
Function guardar_PDF() As Boolean ' Copia las hojas en un nuevo archivo PDF para enviarlo por correo electrónico
Dim estaHoja As String, esteArchivo As String, ruta As String
Dim guardarComo As String
Application.ScreenUpdating = False
' Obtener el nombre del archivo guardado
estaHoja = ActiveSheet.Name
esteArchivo = ActiveWorkbook.Name
ruta = ActiveWorkbook.Path
guardarComo = ruta & "\" & estaHoja & ".pdf"
'Establecer la calidad de impresión
On Error Resume Next
ActiveSheet.PageSetup.PrintQuality = 600
Err.Clear
On Error GoTo 0
' Indicar al usuario cómo enviar
On Error GoTo RefLibError
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=guardarComo, Quality:=xlQualityStandard, _
IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=True
On Error GoTo 0
SaveOnly:
MsgBox "Se ha guardado correctamente una copia de esta hoja como archivo .pdf: " & vbCrLf & vbCrLf & guardarComo & _
"Revise el documento .pdf. Si el documento NO se ve bien, ajuste los parámetros de impresión e inténtelo de nuevo."
guardar_PDF = True
GoTo EndMacro
RefLibError:
MsgBox "Imposible guardar como PDF. No se ha encontrado la biblioteca de referencia"
guardar_PDF = False
EndMacro:
End Function
La función devuelve TRUE o FALSE si la impresión a PDF fue exitosa o no.
Función de guardar y enviar por correo electrónico un PDF
Esta función guardará la ActiveSheet como un PDF y (opcionalmente) adjuntará el PDF a un correo electrónico (asumiendo que tiene instalado Outlook):
Sub prueba_guardar_PDF()
Call enviar_PDF("SendEmail")
End Sub
Function enviar_PDF(Optional action As String = "SaveOnly") As Boolean ' Copia las hojas en un nuevo archivo PDF para enviarlo por correo electrónico
Dim hoja As String, archivo As String, ruta As String
Dim guardarComo As String
Application.ScreenUpdating = False
' Obtener el nombre del archivo guardado
hoja = ActiveSheet.Name
archivo = ActiveWorkbook.Name
ruta = ActiveWorkbook.Path
guardarComo = ruta & "\" & hoja & ".pdf"
'Establecer la calidad de impresión
On Error Resume Next
ActiveSheet.PageSetup.PrintQuality = 600
Err.Clear
On Error GoTo 0
' Indicar al usuario cómo enviar
On Error GoTo RefLibError
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=guardarComo, Quality:=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=True
On Error GoTo 0
' Enviar correo electrónico
If action = "SendEmail" Then
On Error GoTo SaveOnly
Set olApp = CreateObject("Outlook.Application")
Set olEmail = olApp.CreateItem(olMailItem)
With olEmail
.Subject = hoja & ".pdf"
.Attachments.Add guardarComo
.Display
End With
On Error GoTo 0
GoTo EndMacro
End If
SaveOnly:
MsgBox "Se ha guardado correctamente una copia de esta hoja como archivo .pdf: " & vbCrLf & vbCrLf & guardarComo & _
"Revise el documento .pdf. Si el documento NO se ve bien, ajuste los parámetros de impresión e inténtelo de nuevo."
Send_PDF = True
GoTo EndMacro
RefLibError:
MsgBox "Imposible guardar como PDF. No se ha encontrado la biblioteca de referencia"
Send_PDF = False
EndMacro:
End Function
VBA Coding Made Easy
Stop searching for VBA code online. Learn more about AutoMacro - A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!Learn More!