Excel VBA Guardar como (imprimir) en PDF

Este tutorial demostrará cómo guardar / imprimir en un PDF en Excel VBA.

Imprimir en PDF

Este sencillo procedimiento imprimirá ActiveSheet en un PDF.

123456 Sub SimplePrintToPDF ()ActiveSheet.ExportAsFixedFormat Tipo: = xlTypePDF, Nombre de archivo: = "demo.pdf", Calidad: = xlQualityStandard, _IncludeDocProperties: = False, IgnorePrintAreas: = False, OpenAfterPublish: = TrueEnd Sub

También he creado una función con manejo de errores, etc. que imprimirá ActiveSheet en un PDF:

12345678910111213141516171819202122232425262728293031323334353637383940 Sub PrintPDF ()Llamar a Save_PDFEnd SubFunción Save_PDF () As Boolean 'Copia hojas en un nuevo archivo PDF para enviarlas por correo electrónicoAtenuar Thissheet como cadena, ThisFile como cadena, PathName como cadenaDim SvAs como cadenaApplication.ScreenUpdating = Falso'Obtener nombre de guardado de archivoThissheet = ActiveSheet.NameThisFile = ActiveWorkbook.NamePathName = ActiveWorkbook.PathSvAs = PathName & "\" & Thissheet & ".pdf"'Establecer calidad de impresiónEn caso de error, reanudar siguienteActiveSheet.PageSetup.PrintQuality = 600Err.ClearEn caso de error, vaya a 0'Indique al usuario cómo enviarEn caso de error, vaya a RefLibErrorActiveSheet.ExportAsFixedFormat Tipo: = xlTypePDF, Nombre de archivo: = SvAs, Calidad: = xlQualityStandard, IncludeDocProperties: = False, IgnorePrintAreas: = False, OpenAfterPublish: = TrueEn caso de error, vaya a 0Guardar sólo:MsgBox "Se ha guardado correctamente una copia de esta hoja como archivo .pdf:" & Chr (13) & Chr (13) & SvAs & _"Revise el documento .pdf. Si el documento NO se ve bien, ajuste los parámetros de impresión y vuelva a intentarlo".Save_PDF = VerdaderoIr al finalMacroRefLibError:MsgBox "No se puede guardar como PDF. No se encuentra la biblioteca de referencia".Save_PDF = FalsoEndMacro:Función final

La función devuelve VERDADERO o FALSO si la impresión en PDF se realizó correctamente o no.

Función de guardar y enviar PDF por correo electrónico

Esta función guardará ActiveSheet como PDF y (opcionalmente) adjuntará el PDF a un correo electrónico (suponiendo que tenga Outlook instalado):

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 Sub Test_Save_PDF ()Llamar a Send_PDF ("SendEmail")End SubFunción Send_PDF (acción opcional como cadena = "SaveOnly") como booleano 'Copia las hojas en un nuevo archivo PDF para enviarlas por correo electrónicoAtenuar Thissheet como cadena, ThisFile como cadena, PathName como cadenaDim SvAs como cadenaApplication.ScreenUpdating = Falso'Obtener nombre de guardado de archivoThissheet = ActiveSheet.NameThisFile = ActiveWorkbook.NamePathName = ActiveWorkbook.PathSvAs = PathName & "\" & Thissheet & ".pdf"'Establecer calidad de impresiónEn caso de error, reanudar siguienteActiveSheet.PageSetup.PrintQuality = 600Err.ClearEn caso de error, vaya a 0'Indique al usuario cómo enviarEn caso de error, vaya a RefLibErrorActiveSheet.ExportAsFixedFormat Tipo: = xlTypePDF, Nombre de archivo: = SvAs, Calidad: = xlQualityStandard, IncludeDocProperties: = False, IgnorePrintAreas: = False, OpenAfterPublish: = TrueEn caso de error, vaya a 0' Enviar correo electrónicoSi action = "SendEmail" EntoncesEn caso de error, vaya a SaveOnlyApplication.Dialogs (xlDialogSendMail) .ShowEn caso de error, vaya a 0Ir al finalMacroTerminara siGuardar sólo:MsgBox "Se ha guardado correctamente una copia de esta hoja como archivo .pdf:" & Chr (13) & Chr (13) & SvAs & _"Revise el documento .pdf. Si el documento NO se ve bien, ajuste los parámetros de impresión y vuelva a intentarlo".Send_PDF = VerdaderoIr al finalMacroRefLibError:MsgBox "No se puede guardar como PDF. No se encuentra la biblioteca de referencia".Send_PDF = FalsoEndMacro:Función final
wave wave wave wave wave