Macro para guardar Hoja como PDF y como libro de excel a la vez

Tengo un libro de excel con varias hojas, dos de ellas se llaman "Opciones" e "Imprimir" respectivamente.

Necesitaría una Macro para que en la hoja Opciones y mediante un botón (si es posible) realice estas dos acciones a la vez:

-guarde la hoja "Imprimir" como PDF en la ruta "C:\ruta\de\ejemplo\FacturasPDF" y,

-Guarde una copia de las hojas "Opciones" e "Imprimir" bajo un mismo libro en formato Excel en la ruta "C:\ruta\de\ejemplo\FacturasExcel" (por si una vez elaborado el excel fuese necesario modificar las opciones en la hoja "Opciones")

Sé que hay varios post similares, pero he intentado seguirlos y, o bien la solución presentada no es la que necesito, o bien, me da alguna clase de error.

1 Respuesta

Respuesta
2

Te anexo la macro para hacer las 2 copias

Sub PDFyLibro()
'Por.Dante Amor
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    Set l1 = ThisWorkbook
    ruta1 = "C:\ruta\de\ejemplo\FacturasPDF\"
    ruta2 = "C:\ruta\de\ejemplo\FacturasExcel\"
    '
    l1.Sheets("Imprimir").ExportAsFixedFormat Type:=xlTypePDF, _
        Filename:=ruta1 & "imprimir.pdf", _
        Quality:=xlQualityStandard, IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, OpenAfterPublish:=False
    Sheets("Opciones").Copy
    Set l2 = ActiveWorkbook
    l1.Sheets("Imprimir").Copy After:=l2.Sheets(l2.Sheets.Count)
    l2.SaveAs Filename:=ruta2 & "opciones e imprimir.xlsx", _
        FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    l2.Close
    Application.DisplayAlerts = True
    MsgBox "Copias terminadas"
End Sub

No comentaste qué nombre poner a cada archivo, al pdf le puse "imprimir.pdf" y al de las hojas le puse "opciones e imprimir.xlsx", cambia en la macro los nombres por los que desees.


Hola Dante,

Muchas gracias por tu ayuda. Se me había olvidado por completo que el nombre de ambas copias deben ser el texto que figura en la celda C18 de la hoja "Imprimir". 

¿Podrías decirme cómo modificar la macro para que realice esto?

¡Gracias!

Te anexo la macro con la actualización

Sub PDFyLibro()
'Por.Dante Amor
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    Set l1 = ThisWorkbook
    ruta1 = "C:\ruta\de\ejemplo\FacturasPDF\"
    ruta2 = "C:\ruta\de\ejemplo\FacturasExcel\"
    '
    nombre = l1.Sheets("Imprimir").[C18]
    '
    l1.Sheets("Imprimir").ExportAsFixedFormat Type:=xlTypePDF, _
        Filename:=ruta1 & nombre & ".pdf", _
        Quality:=xlQualityStandard, IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, OpenAfterPublish:=False
    Sheets("Opciones").Copy
    Set l2 = ActiveWorkbook
    l1.Sheets("Imprimir").Copy After:=l2.Sheets(l2.Sheets.Count)
    l2.SaveAs Filename:=ruta2 & nombre & ".xlsx", _
        FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    l2.Close
    Application.DisplayAlerts = True
    MsgBox "Copias terminadas"
End Sub

Saludos.Dante Amor

No olvides valorar la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas