Generar un archivo pdf para cada hoja de trabajo

La idea es generar para cada hoja de trabajo un archivo PDF cuyo nombre se "arma" o se construye con texto y valores de algunas celdas. Aparentemente genera el archivo pdf pero no abre

Se tiene el siguiente fragmento de la macro:

RutaGuardar = ActiveWorkbook.Path & "\Respuestas\" & "Factura No." & Numero & " " & Nombre0 & " " & empleado & ".pdf"
ActiveWorkbook.SaveAs Filename:=RutaGuardar, FileFormat:=xlOpenXMLTemplateMacroEnabled, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
ActiveWindow.Close Savechanges:=True
Next

Dam, favor de corregirme para que genere pdf bien y lo pueda abrir

Respuesta

En un libro abierto, graba una macro guardando una hoja en formato PDF. De este modo podrás ver que parte te está fallando, pero te adelanto que FileFormat:=xlOpenXMLTemplateMacroEnabled huele a chamusquina si estamos hablando de guardar en formato PDF

Deberás comparar esta parte

 FileFormat:=xlOpenXMLTemplateMacroEnabled, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
ActiveWindow.Close Savechanges:=True

1 respuesta más de otro experto

Respuesta
1

¿Si tienes 5 hojas quieres que se generen 5 pdf?

La macro que pusiste es para guardar el archivo como excel con macros

Puedes poner la macro completa y explicar exactamente qué necesitas

Antes de esta línea:

 ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _

Pon el siguiente código para que el archivo sea de una hoja

    With ActiveSheet.PageSetup
        .PrintTitleRows = ""
        .PrintTitleColumns = ""
    End With
    ActiveSheet.PageSetup.PrintArea = ""
    With ActiveSheet.PageSetup
        .LeftHeader = ""
        .CenterHeader = ""
        .RightHeader = ""
        .LeftFooter = ""
        .CenterFooter = ""
        .RightFooter = ""
        .LeftMargin = Application.InchesToPoints(0.708661417322835)
        .RightMargin = Application.InchesToPoints(0.708661417322835)
        .TopMargin = Application.InchesToPoints(0.748031496062992)
        .BottomMargin = Application.InchesToPoints(0.748031496062992)
        .HeaderMargin = Application.InchesToPoints(0.31496062992126)
        .FooterMargin = Application.InchesToPoints(0.31496062992126)
        .PrintHeadings = False
        .PrintGridlines = False
        .PrintComments = xlPrintNoComments
        .PrintQuality = 600
        .CenterHorizontally = False
        .CenterVertically = False
        .Orientation = xlPortrait
        .Draft = False
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .BlackAndWhite = False
        .Zoom = False
        .FitToPagesWide = 1
        .FitToPagesTall = 1
        .PrintErrors = xlPrintErrorsDisplayed
        .OddAndEvenPagesHeaderFooter = False
        .DifferentFirstPageHeaderFooter = False
        .ScaleWithDocHeaderFooter = True
        .AlignMarginsHeaderFooter = True
        .EvenPage.LeftHeader.Text = ""
        .EvenPage.CenterHeader.Text = ""
        .EvenPage.RightHeader.Text = ""
        .EvenPage.LeftFooter.Text = ""
        .EvenPage.CenterFooter.Text = ""
        .EvenPage.RightFooter.Text = ""
        .FirstPage.LeftHeader.Text = ""
        .FirstPage.CenterHeader.Text = ""
        .FirstPage.RightHeader.Text = ""
        .FirstPage.LeftFooter.Text = ""
        .FirstPage.CenterFooter.Text = ""
        .FirstPage.RightFooter.Text = ""
    End With

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas