Generar PDF multipáginas desde Excel 2002

Necesitaría generar un PDF “multipáginas” de unas 800 páginas (a día de hoy) de mi fichero excel. Me explico; tengo una base de datos con 800 líneas y subiendo (hoja 1) y otra hoja (hoja 2) que me imprime en la impresora de papel en A4. Lo que hago es copiar una línea cualquiera de la hoja 1, lo pego en la línea 3 de la hoja 2 y automáticamente se me distribuyen en diferentes celdas los valores que allí tengo y dándole al botón de imprimir me lo saca en papel.

Ahora necesitaría si es posible para cada una de estas líneas crear un PDF multipáginas pero no por separado sino que todas se pongan en el mismo PDF del tal manera que tuviera las 800 páginas accesibles al abrir solo 1 PDF.

He intentado hacerlo de forma básica solo con una línea para ver si lo conseguía con el siguiente código pero me da error “438” cuando intenta crear el PDF.

Private Sub CommandButton1_Click()

Sheets("Hoja2").Select

Application.ScreenUpdating = False

Dim RutaArchivo As String

RutaArchivo = "C:\Escritorio\PDF\FICHERO1.PDF"

Sheets("Hoja2").Range("A6:K61").Select

Sheets("Hoja2").ExportAsFixedFormat Type:=xlTypePDF, Filename:=RutaArchivo, _

         Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _

       :=False, OpenAfterPublish:=False

End Sub

Tengo excel 2002 y tengo instalado el complemento de excel “SAVEASPDF”.

1 respuesta

Respuesta
1

H o l a:

Puedes activar la grabadora de macros; una vez activa la grabadora, guarda el libro como pdf en algún directorio, revisa en los parámetros que esté configurada la opción para guardar todo el libro, regresa a la grabadora de macros y presiona el botón para detener la grabación. Entra a VBA y revisa el código que se generó.

Envíame el código para revisarlo y adaptarlo para guardar en un solo pdf todas las hojas.

Hola Dante, gracias por atenderme.

He instalado Excel 2007 y ya he solucionado el como hacer un PDF de una sola hoja, gracias por la respuesta.

¿A que correo te lo mando, no tengo la dirección?.

Un saludo

H o l a:

Lo puedes pegar aquí mismo en el foro. O envíame tu archivo de excel con algunos ejemplos en las hojas.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “rioja32” y el título de esta pregunta.

':)

S a l u d o s . D a n t e   A m o r

Hola Dante

Ya te he enviado el fichero.

Un saludo

H o l a:

Te anexo la macro para generar todas las hojas en un solo PDF. La macro funciona para que la ejecutes en la versión de excel 2007.

La macro tiene que establecer que la impresión será solamente de una hoja, es por eso que puede tardar varios minutos para hacerlo con 100 registros; es por eso que puse un contador en la barra de estatus, para que observes cuántos registros se han procesado.

Private Sub CommandButton1_Click()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Application.SheetsInNewWorkbook = 1
    Application.StatusBar = False
    '
    Set l1 = ThisWorkbook
    Set h1 = l1.Sheets("Hoja1")
    Set h2 = l1.Sheets("Hoja2")
    Set l2 = Workbooks.Add
    RutaArchivo = "C:\Escritorio\PDF\FICHERO1.PDF"
    RutaArchivo = "C:\Trabajo\FICHERO1.PDF"
    RutaArchivo2 = "C:\Trabajo\FICHERO1.xlsx"
    '
    u = h1.Range("A" & Rows.Count).End(xlUp).Row
    For i = 4 To u
        Application.StatusBar = "Procesando el registro: " & i & " de " & u
        h1.Rows(i).Copy h2.Rows(3)
        h2.Range("A6:K61").Copy
        l2.Sheets.Add after:=Sheets(l2.Sheets.Count)
        Set h3 = l2.ActiveSheet
        h3.[A1].PasteSpecial Paste:=xlValues
        h3.[A1].PasteSpecial Paste:=xlFormats
        h3.[A1].PasteSpecial Paste:=xlPasteColumnWidths
        '
        h3.PageSetup.PrintArea = "A1:K56"
        '
        res h3
    Next
    l2.SaveAs Filename:=RutaArchivo2, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    '
    l2.ExportAsFixedFormat Type:=xlTypePDF, Filename:=RutaArchivo, _
        Quality:=xlQualityStandard, IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, OpenAfterPublish:=False
    l2.Close
    Application.ScreenUpdating = True
    Application.StatusBar = False
    MsgBox "Archivo pdf creado"
End Sub
Sub res(h3)
    With h3.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
        .PaperSize = xlPaperLetter
        .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
End Sub

':)
'S aludos. D a n t e   A m o r . R ecuerda valorar la respuesta. G racias
':)

Hola Dante

Te he mandado un correo con un problema.

Un saludo, Rubén

En tu pregunta original pusiste esto:

"

Lo que hago es copiar una línea cualquiera de la hoja 1, lo pego en la línea 3 de la hoja 2 y automáticamente se me distribuyen en diferentes celdas los valores que allí tengo y dándole al botón de imprimir me lo saca en papel.

"

Entonces, entiendo que en la hoja2 tienes unas fórmulas, pero el archivo que me enviaste no tiene fórmulas, solamente pon las fórmulas en la hoja2 para que "automáticamente se me distribuyen en diferentes celdas los valores que allí tengo"

Si ese el problema, r ecuerda valorar la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas