Botón que desde un libro copie en otro libro una hoja especifica, la convierta en PDF y la guarde en una carpeta.

En este momento tengo 2 libros en Excel. Plantilla1 y Plantilla2. Me podrían ayudar a crear una macro que desde la Plantilla1 sea capaz de copiar una hoja especifica dentro de la Plantilla2, la convierta en PDF y la guarde en una carpeta.

1 Respuesta

Respuesta
1

Te anexo la macro para que la pongas en el botón.

Las 2 plantillas deberán estar abiertas.


Tienes que cambiar estos datos en la macro:

hoja = "Hoja2" 'Nombre de la hoja a copiar
plantilla2 = "plantilla2.xlsx" 'Nombre del libro destino con todo y extensión
carpeta = "C:\trabajo\varios\" 'Nombre de la carpeta destino


Sub GuardarHoja()
'Por.Dante Amor
    hoja = "Hoja2"                      'Nombre de la hoja a copiar
    plantilla2 = "plantilla2.xlsx"      'Nombre del libro destino con todo y extensión
    carpeta = "C:\trabajo\varios\"      'Nombre de la carpeta destino
    '
    Set l1 = ThisWorkbook
    Set l2 = Workbooks(plantilla2)
    '
    l1.Sheets(hoja).Copy After:=l2.Sheets(l2.Sheets.Count)
    l1.Sheets(hoja).ExportAsFixedFormat Type:=xlTypePDF, _
        Filename:=carpeta & hoja & ".pdf", _
        Quality:=xlQualityStandard, IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, OpenAfterPublish:=False
End Sub

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

Recuerda valorar la respuesta.

Hola Dante antes que todo darte las gracias por tan valioso aporte. Aprovecho para hacer una pregunta, suponiendo que tengo 2 plantillas con iguales nombres. Plantilla Administrativa. (Origen) y Plantilla Administrativa. (Que es una copia de la de origen). Puedo copiar a través de un botón desde la plantilla de origen, una hoja pero en la otra plantilla; y que dicha hoja sea guardada en PDF en una carpeta.

Eso es justamente lo que hace la macro.

¿Ya probaste la macro que te puse?

¿Tienes dudas de cómo ejecutar la macro?

El archivo que contiene la macro se llamará "Plantilla Administrativa.xlsm" (m porque contiene macros), el otro archivo se llamará "Plantilla Administrativa.xlsx" (x porque solamente es de excel).

Entonces abres los 2 archivos y ejecutas la macro. Te anexo la macro con los ajustes para que la ejecutes.

Lo que va a hacer la macro es copiar la hoja "Febrero" de la plantilla origen a la plantilla destino y además va a guardar la hoja "Febrero" como PDF en C:\

Sub GuardarHoja()
'Por.Dante Amor
    hoja = "Febrero"
    plantilla2 = "Plantilla Administrativa.xlsx"
    carpeta = "C:\"                                 'Nombre de la carpeta destino
    '
    Set l1 = ThisWorkbook
    Set l2 = Workbooks(plantilla2)
    '
    l1.Sheets(hoja).Copy After:=l2.Sheets(l2.Sheets.Count)
    l1.Sheets(hoja).ExportAsFixedFormat Type:=xlTypePDF, _
        Filename:=carpeta & hoja & ".pdf", _
        Quality:=xlQualityStandard, IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, OpenAfterPublish:=False
    l2.Save
End Sub


Sigue las Instrucciones para un botón y ejecutar la macro

  1. Abre tu libro de Excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. En el menú elige Insertar / Módulo
  4. En el panel del lado derecho copia la macro
  5. Ahora para crear un botón, puedes hacer lo siguiente:
  6. Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas
  7. Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
  8. Una vez que insertaste la imagen en tu hoja, dale click derecho dentro de la imagen y selecciona: Tamaño y Propiedades. En la ventana que se abre selecciona la pestaña: Propiedades. Desmarca la opción “Imprimir Objeto”. Presiona “Cerrar”
  9. Vuelve a presionar click derecho dentro de la imagen y ahora selecciona: Asignar macro. Selecciona: GuardarHoja
  10. Aceptar.
  11. Para ejecutarla dale click a la imagen.


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

Recuerda valorar la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas