Attribute VB_Name = "ExportarPDF" ' Gerencie.com - Macros para exportar hojas y rangos de Excel a PDF. ' Importar en el editor de VBA (Alt + F11): Archivo > Importar archivo. ' Los PDF se guardan en la misma carpeta del libro, que debe estar guardado. ' 1. Exportar la hoja activa a PDF y abrirlo Sub ExportarHojaPDF() If ThisWorkbook.Path = "" Then MsgBox "Guarde primero el libro.": Exit Sub ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _ Filename:=ThisWorkbook.Path & Application.PathSeparator & ActiveSheet.Name & ".pdf", _ Quality:=xlQualityStandard, IncludeDocProperties:=True, _ IgnorePrintAreas:=False, OpenAfterPublish:=True End Sub ' 2. Exportar a PDF con el nombre tomado de dos celdas (F3 y G3) y un rango fijo ' Cambie las celdas y el rango según su formato. Sub ExportarRangoConNombreDeCeldas() Dim nombre As String If ThisWorkbook.Path = "" Then MsgBox "Guarde primero el libro.": Exit Sub nombre = LimpiarNombre(Range("F3").Text & " - " & Range("G3").Text) If Len(Trim(nombre)) <= 3 Then MsgBox "Escriba el nombre en F3 y G3.": Exit Sub Range("A1:G30").ExportAsFixedFormat Type:=xlTypePDF, _ Filename:=ThisWorkbook.Path & Application.PathSeparator & nombre & ".pdf", _ Quality:=xlQualityStandard, IncludeDocProperties:=True, _ IgnorePrintAreas:=True, OpenAfterPublish:=False MsgBox "PDF guardado: " & nombre & ".pdf", vbInformation End Sub ' 3. Exportar en horizontal y ajustado a una página de ancho Sub ExportarHorizontalUnaPagina() If ThisWorkbook.Path = "" Then MsgBox "Guarde primero el libro.": Exit Sub With ActiveSheet.PageSetup .Orientation = xlLandscape .Zoom = False .FitToPagesWide = 1 .FitToPagesTall = False End With ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _ Filename:=ThisWorkbook.Path & Application.PathSeparator & ActiveSheet.Name & ".pdf", _ Quality:=xlQualityStandard, OpenAfterPublish:=True End Sub ' 4. Exportar todo el libro en un solo PDF Sub ExportarLibroPDF() If ThisWorkbook.Path = "" Then MsgBox "Guarde primero el libro.": Exit Sub ThisWorkbook.ExportAsFixedFormat Type:=xlTypePDF, _ Filename:=ThisWorkbook.Path & Application.PathSeparator & _ Left(ThisWorkbook.Name, InStrRev(ThisWorkbook.Name, ".") - 1) & ".pdf", _ Quality:=xlQualityStandard, OpenAfterPublish:=True End Sub ' 5. Exportar cada hoja en un PDF separado Sub ExportarCadaHojaPDF() Dim h As Worksheet If ThisWorkbook.Path = "" Then MsgBox "Guarde primero el libro.": Exit Sub For Each h In ThisWorkbook.Worksheets If h.Visible = xlSheetVisible Then h.ExportAsFixedFormat Type:=xlTypePDF, _ Filename:=ThisWorkbook.Path & Application.PathSeparator & LimpiarNombre(h.Name) & ".pdf", _ Quality:=xlQualityStandard, OpenAfterPublish:=False End If Next h MsgBox "PDF generados en " & ThisWorkbook.Path, vbInformation End Sub ' Quita del nombre los caracteres que Windows no admite en un archivo Function LimpiarNombre(ByVal texto As String) As String Dim c As Variant For Each c In Array("\", "/", ":", "*", "?", """", "<", ">", "|") texto = Replace(texto, c, "-") Next c LimpiarNombre = Trim(texto) End Function