Macro que copie y pegue automáticamente código de hoja a hoja.

Tengo un listado de 800 códigos únicos correspondientes al mismo numero de empleados, en una hoja, en otro archivo tengo un formato con varias formulas de búsqueda que muestran información de un empleado al ingresar el código, lo que necesito es una macro que me permita seleccionar la columna donde están los códigos y que estos se copien uno a uno al archivo del formato donde tengo una macro que exporta en pdf a una ubicación la información del empleado, la dos macros tendrían que funcionar al mismo tiempo para que se copie el primero código al formato, se carguen los datos, se exporten a pdf a la ubicación y luego repita el proceso con el siguiente código.

Respuesta
1

H o l a:

Tengo algunas dudas.

- Tienes un archivo "formato",

  • ¿Nombre del archivo?
  • ¿Nombre de la hoja?
  • ¿Y en cuál celda se tiene que poner el código?

- La macro que tienes, ¿se ejecuta en automático cuando pones el código en dicha celda?

- Si no se ejecuta en automático, entonces hay que poner la macro en los eventos de tu hoja.

- Ahora sobre tu archivo con los códigos,

  • ¿Nombre de la hoja?
  • ¿Columna dónde tienes los códigos?
  • ¿Fila en la que empiezan los códigos?

Como puedes ver son varios datos los que se requieren para armar la macro, si pudieras darme toda la información con lujo de detalle.

Que tal Dante buenos días te comento: la macro lo que hace es crear un pdf con el nombre del empleado y enviarlo a una ubicación que yo le indico, la macro esta en un modulo y le asigne un botón, el código de cada persona lo ingreso manual, y tarda unos segundos en cargar la información, hasta aquí todo bien, sin embargo se hace un poco tedioso ingresar uno a uno los códigos esperar a que cargue los datos y luego presionar el botón para que genere y guarde el pdf, de acá viene mi solicitud, en otro archivo tengo el listado de códigos, y lo que me gustaría hacer es que esos códigos se copien automáticamente (el orden no importa), al archivo del formato, esperar que carguen los datos, que se ejecute la macro que crea el pdf y lo guarda y luego copie el siguiente código y así sucesivamente hasta que se generen todo los reportes.  esta es la macro que utilizo:

Private Sub Reporte_Asistencia()
Columns("A:N").Select
Range("A3").Activate
Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Reportes\" & Range("B5") & ".pdf" _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=False
Sheets("AGOSTO").Select
Range("K5").Select
End Sub 

Ingresando manualmente los códigos demora un tiempo, si puede hacerse automático aunque tome tiempo pero podría ocuparme en otras cosas,

agradezco tu apoyo.

Sí se puede hacer en automático, pero no respondiste mis dudas.

Lo único que sé es que en la celda B5 va el código, pero falta todo esto:

- Tienes un archivo "formato",

  • ¿Nombre del archivo?
  • ¿Nombre de la hoja?

- Ahora sobre tu archivo con los códigos,

  • ¿Nombre de la hoja?
  • ¿Columna dónde tienes los códigos?
  • ¿Fila en la que empiezan los códigos?

Que tal Dante, tienes razón, lamento no haber leído correctamente, el nombre del archivo "formato" es PLANTILLA INDIVIDUAL ACTUALIZADA, y el código se coloca en la celda K5. el archivo donde están los códigos se llama "Personal_Actualizado 2015" y la columna donde están los códigos es la A hasta la fila 748, aunque estas filas se incrementan, la macro esta en el primer archivo de plantilla individual.

Gracias por tiempo y apoyo

Faltan los nombres de las hojas, la hoja del formato y la hoja donde están los códigos

En cuál fila empiezan los códigos

Claro, en el archivo PLANTILLA INDIVIDUAL ACTUALIZADA donde genero el reporte las hojas tiene el nombre de cada mes, de enero a diciembre,  la que estoy trabajando es AGOSTO, el nombre es con mayúsculas, y la hoja del archivo Personal_Actualizado 2015 se llama data (minúsculas) los códigos están en la columna A2:A748.

Gracias de nuevo

H o l a:

Pon la macro en tu archivo "Plantilla".

Debes tener también abierto tu archivo "Personal_Actualizado 2015.xlsx"

Ejecuta la macro, ya no es necesario la otra macro que tienes, esta macro que te estoy enviando, tomará uno por uno los códigos del archivo "Personal" y lo pondrá en la hoja "AGOSTO" en la celda K5, después de hacer eso generará el PDF.

Sub CopiarCodigos()
'Por.Dante Amor
    Set l1 = ThisWorkbook
    Set h1 = l1.Sheets("AGOSTO")
    Set l2 = Workbooks("Personal_Actualizado 2015.xlsx")
    Set h2 = l2.Sheets("data")
    '
    For i = 2 To h2.Range("A" & Rows.Count).End(xlUp).Row
        h1.[K5] = h2.Cells(i, "A")
        h1.Columns("A:N").ExportAsFixedFormat Type:=xlTypePDF, _
            Filename:="C:\Trabajo\" & h1.Range("B5") & ".pdf", _
            Quality:=xlQualityStandard, IncludeDocProperties:=True, _
            IgnorePrintAreas:=False, OpenAfterPublish:=False
    Next
End Sub

Gracias por la respuesta Dante, te comento que coloque la macro en el modulo, al ejecutarla dio un error de compilación, sin embargo cuando revise la carpeta de la ruta que coloque aparecieron tres pdf de los tres primeros códigos, pero sigue mostrando un error en la linea 

    For i = 2 To h2.Range("A" & Rows.Count).End(xlup).Row

Si funciona porque genera pdf pero no entiendo el error

Gracias.

¿Qué mensaje de error te aparece?

¿Tienes celdas combinadas?

¿La hoja está protegida?

El código 4, es decir, en el código que se quedó, ¿tiene algún caracter raro o es diferente a los otros códigos?

Se me olvidó comentarte que cambiaras en la macro la palabra "Trabajo" por la de "Reportes"

Gracias Dante:

el error es '1004' en tiempo de ejecución, y en efecto cambie el nombre a "Reportes", la celda B4 que es el nombre es una celda combinada, puede ser eso la causa del error?

Quita las celdas combinadas y vuelve a probar

Que tal Dante buenos días, ya quite las celdas combinadas, ejecute la macro y comenzó a generar el pdf, pero se detuvo en el cuarto código y mostró el error "no coinciden los tipos", y marca en amarillo el error, a podrá deberse? 

En la celda B5 de la hoja "agosto" tienes que tener algo, si está vacío, no puede poner el nombre del archivo, o sí tienes una fecha, también te va a marcar el error, como no sé qué datos tienes en la celda.

En la celda B5 tengo una fórmula que busca el nombre de la persona en un tercer archivo de acuerdo al código que coloque en la celda K5, y la macro que utilizaba tomaba el nombre de la celda B5 y lo daba como nombre de archivo al pdf, ¿tendría qué quitar esa fórmula?

Pero en el caso del cuarto código que dato te puso en la celda B5

Si el código no se encuentra en el tercer archivo, entonces la fórmula debería regresar vacío

Entonces en la macro que te preparé, puedo preguntar si en la celda B5 es vacío entonces que no genere el PDF.

Es cierto no esta, no lo había tomado en cuenta, voy a depurarlo para dejar los que están en el archivo, voy a probarlo, mucha gracias Dante, como siempre la respuesta correcta.

Prueba con esta macro

Sub CopiarCodigos()
'Por.Dante Amor
    Set l1 = ThisWorkbook
    Set h1 = l1.Sheets("AGOSTO")
    Set l2 = Workbooks("Personal_Actualizado 2015.xlsx")
    Set h2 = l2.Sheets("data")
    '
    For i = 2 To h2.Range("A" & Rows.Count).End(xlUp).Row
        h1.[K5] = h2.Cells(i, "A")
        If h1.[B5] <> "" And Not IsError(h1.[B5]) Then
            h1.Columns("A:N").ExportAsFixedFormat Type:=xlTypePDF, _
            Filename:="C:\Trabajo\" & h1.Range("B5") & ".pdf", _
            Quality:=xlQualityStandard, IncludeDocProperties:=True, _
            IgnorePrintAreas:=False, OpenAfterPublish:=False
        End If
    Next
End Sub

Recuerda valorar la respuesta. G r a c i a s

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas