Macro para guardar una base de datos a archivo PDF

Tengo el siguiente macro que uso para imprimir una base de datos sobre un formato (el formato es fijo, solo algunas celdas cambian). Mi problema es que ahora que necesito "imprimirlo" como pdf a cada rato me pregunta el nombre de un archivo, hay alguna manera de que puedan guardarse como PDF sin pedirme el nombre del archivo(a veces tengo que imprimir mas de 300 hojas diferentes) o compilarse todo en un archivo pdf.
Sub IMPRIMIR()
Inicio = Range("M6").Value
Fin = Range("Q6").Value
For i = Inicio To Fin
Range("O4").FormulaR1C1 = i
ActiveWindow.SelectedSheets.PrintOut copies:=1
Next
Range("O4") = ""
End Sub

Respuesta
3

Te anexo la macro actualizada para imprimir y guardar como pdf

Sub IMPRIMIR()
    ruta = ThisWorkbook.Path & "\"
    arch = "archivo"
    Inicio = Range("M6").Value
    Fin = Range("Q6").Value
    For i = Inicio To Fin
        Range("O4").FormulaR1C1 = i
        ActiveSheet.PrintOut copies:=1
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
            Filename:=ruta & arch & "_" & i & ".pdf", _
            Quality:=xlQualityStandard, IncludeDocProperties:=True, _
            IgnorePrintAreas:=False, OpenAfterPublish:=False
    Next
    Range("O4") = ""
End Sub

Los archivos se van a crear con el nombre: achivo_1.pdf, archivo_2.pdf, archivo_n.pdf


Si no quieres imprimir, solamente quita esta línea:

        ActiveSheet.PrintOut copies:=1

'.[Sal u dos. Dante Amor. No olvides valorar la respuesta. 
'.[Avísame cualquier duda

Si quieres que todas las hojas queden en un solo PDF, ejecuta la siguiente macro

Sub IMPRIMIR()
'Act Por Dante Amor
    '
    Application.ScreenUpdating = False
    '
    ruta = ThisWorkbook.Path & "\"
    arch = "archivo"
    Inicio = Range("M6").Value
    Fin = Range("Q6").Value
    una = True
    Set l1 = ThisWorkbook
    Set h1 = l1.ActiveSheet
    For i = Inicio To Fin
        h1.Range("O4").FormulaR1C1 = i
        'h1.PrintOut copies:=1
        If una Then
            una = False
            h1.Copy
            Set l2 = ActiveWorkbook
        Else
            h1.Copy after:=l2.Sheets(l2.Sheets.Count)
        End If
        Set h2 = l2.ActiveSheet
        h1.Cells.Copy
        h2.Range("A1").PasteSpecial xlValues
    Next
    l2.ExportAsFixedFormat Type:=xlTypePDF, _
        Filename:=ruta & arch & ".pdf", _
        Quality:=xlQualityStandard, IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, OpenAfterPublish:=False
    l2.Close False
    Range("O4") = ""
    Application.CutCopyMode = False
End Sub

'.[Sal u dos. Dante Amor. No olvides valorar la respuesta. 
'.[Avísame cualquier duda

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas