Copiar y pegar datos en varios Excels

Para Dante Amor :)

Hola! Veamos si me puedes ayudar con este problema.

1) Tengo un Workbook con un rango (B4:G4), donde ingreso un número en cada celda.

2) Al ejecutar el código ocurren varias cosas, una de ellas es que estos valores se tienen que copiar en otros Workbooks, en una hoja en formato columnas, como en una base de datos (se pegan en la última celda vacía de las columnas B:G)

3) Hoy en día tengo 4 workbooks donde pegar, pero ese número podría cambiar en el futuro. Por lo que mi solución actual de hacer una MACRO para cada uno individualmente (con nombre y apellido) no sé si es lo más práctico (es decir, el hacer un script de copiar y pegar, y repetir manualmente ese código tantas veces como workbooks haya no parece razonable).

* ¿Hay alguna manera de hacer este proceso automáticamente? Intenté, pero honestamente no tengo el conocimiento para hacerlo.

* Sugerencias?

2 Respuestas

Respuesta
1

Me llegó una notificación de que algo me respondiste, pero no veo la respuesta. Quizás la borraste.

Ayer intenté varias veces mandar la consulta pero el sistema no me dejó, me sorprende que haya salido al final. Disculpas si te llegaron varias solicitudes.

Respondo a lo que pude ver que me llegó en el mail.

Lo que va en la celda B4 a G4 son precios (con dos decimales), todos ellos se copian a otros libros a una base de datos. La realidad es que no todos los valores de las celdas se copian en todos los libros, pero no quiero complicar el asunto.

Respuesta
1

H o l a : Podrías explicar con cuál de los datos que pones en las celdas B4 a G4, se puede saber en cuál libro se tienen que pegar los datos.

Lo correcto sería que en alguno de esos datos pongas por ejemplo, en la celda B4, "Libro15",

Entonces la macro abriría el archivo "Libro15", en la hoja "Datos", buscaría la última fila y ahí pegaría los datos. Guardaría el archivo "Libro15" y lo cerraría.

De esa forma, no importa si son 4 o 100 archivos, si de alguna forma puedes identificar su nombre de archivo.

Te anexo la macro para copiar las celdas en todos los archivos que se encuentren en una carpeta. Las celdas se pegarán en la primera hoja del libro destino.

Cambia en la macro "C:\trabajo\" por la carpeta donde tienes los archivos

Sub CopiarCeldas()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Set l1 = ThisWorkbook
    Set h1 = l1.Sheets("Hoja3")
    ruta = "C:\trabajo\"
    arch = Dir(ruta & "*.xlsx")
    Do While arch <> ""
        Set l2 = Workbooks.Open(ruta & arch)
        Set h2 = l2.Sheets(1)
        h1.Range("B4:G4").Copy
        u = h2.Range("B" & Rows.Count).End(xlUp).Row + 1
        h2.Range("B" & u).PasteSpecial xlValues
        l2.Close True
        arch = Dir()
    Loop
    MsgBox "Celdas copiadas"
End Sub
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Voy a revisarlo más tarde y te comento.

Muchísimas gracias por tu gentil atención.

Hola Dante, acabo de testear la macro y tengo los siguientes comentarios.

1. Parecería ser que el loop funciona recorriendo todos los libros, sin embargo, no copia ningún valor, solo celdas vacías. Adjunto imagen.

2. También revisa el libro desde donde tengo la macro, me daba error hasta que agregué una hoja llamada "NavHist", en si no es grave.

3. Tengo siempre la opción de OPTION EXPLICIT habilitada por defecto. Te molestaría declarar las variables y crear los objetos necesarios. Me estaba dando error.

En fin, creo que sería solo.

Muchas gracias.

H  o   l   a:

No sé como se llama la hoja donde tienes los datos, esa información es necesaria y no la pusiste en tu explicación. En la macro que te envié puse que la hoja se llama "Hoja3", tienes que cambiar en la macro "Hoja3" por el nombre de la hoja que tiene los datos.

En VBA no es necesario declarar las variables, por lo tanto, no te recomiendo que utilices Option Explicit, sobre todo si no vas a declarar las variables adecuadamente.

Revisa que en la hoja en las celdas B4 a G4 tengas datos. También revisa que en los libros destino tengas una hoja llamada "NavHist"

Sub CopiarCeldas()
'Por.Dante Amor
    dim l1, h1, ruta, arch, l2, h2, u
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Set l1 = ThisWorkbook
    Set h1 = l1.Sheets("Hoja3")
    ruta = "C:\trabajo\"
    arch = Dir(ruta & "*.xlsx")
    Do While arch <> ""
        Set l2 = Workbooks.Open(ruta & arch)
        Set h2 = l2.Sheets("NavHist")
        h1.Range("B4:G4").Copy
        u = h2.Range("B" & Rows.Count).End(xlUp).Row + 1
        h2.Range("B" & u).PasteSpecial xlValues
        l2.Close True
        arch = Dir()
    Loop
    MsgBox "Celdas copiadas"
End Sub

R ecuerda cambiar "Hoja3" por el nombre de tu hoja donde están los datos  B4 a G4.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas