Macro para copiar celdas con datos de diversos libros a uno nuevo

Espero me puedas ayudar de antemano se te agradece, tengo tres archivos con datos en las hoja1 y requiero que mediante una macro que se guardara en un cuarto archivo llamado "union.xlsm" se haga la unión de los datos de cada archivo. (En la hoja llamada "compendio"); en el "archivo1" los datos llegan hasta la columna F, en el "archivo2" llegan hasta la columna D, en el "archivo3" llegan a la columna G, en el caso de las filas en los tres archivos varían, mi pregunta es como pegar los datos de manera secuencial en las columnas es decir que en el archivo "union.xlsm", en su hoja "compendio" todos queden de la siguiente manera la información del "archivo1" ocupara de la celda A3 hasta la columna F el "archivo2" continuara en G3 hasta la columna J, la información del ultimo archivo se copiara a partir de la columna K3 hasta Q, todos los archivos están en la misma carpeta.

1 respuesta

Respuesta
2

Sigue las Instrucciones para un botón y ejecutar la macro1. Abre tu libro de Excel2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F113. En el menú elige Insertar / Módulo4. En el panel del lado derecho copia la macro5. Ahora para crear un botón, puedes hacer lo siguiente:6. Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas7. 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 Asignar macro / Selecciona: pinta9. Aceptar. 10. Para ejecutarla dale click a la imagen.

Sub unir()'Por.DamSet a1 = Workbooks("archivo1").Sheets("Hoja1")Set a2 = Workbooks("archivo2").Sheets("Hoja1")Set a3 = Workbooks("archivo3").Sheets("Hoja1")Set u1 = Workbooks("union").Sheets("compendio")a1.Activateufila = ActiveCell.SpecialCells(xlLastCell).RowRange("A1:F" & ufila).Copy u1.Range("A3")a2.Activateufila = ActiveCell.SpecialCells(xlLastCell).RowRange("A1:D" & ufila).Copy u1.Range("G3")a3.Activateufila = ActiveCell.SpecialCells(xlLastCell).RowRange("A1:G" & ufila).Copy u1.Range("K3")End Sub

Indicaciones:

1. Deberás tener abiertos los 4 libros

2. Cambia en la macro, si es necesario, los nombres de "archivo1", "archivo2", "archivo3" y de las hojas que se van a copiar "hoja1", por los nombres reales.

Listo ya puedes ejecutar la macro

Saludos. Dam

gracias por la respuesta solo que quisiera que este proceso se hiciera sin tener abiertos los libros de los datos y dos favores mas 1 me puedes recomendar un buen libro o tutorial para aprender macros en excel ya que me gustaría aprender y llegar a ayudar como lo haces, y el segundo favor es que el código me aparece en una sola linea es por mi navegador, gracias por tu ayuda y tiempo

1. Te cambio la macro, para que te abra los archivos 1, 2 y 3.

2. Cambia en la macro, el nombre de la carpeta por el nombre de tu carpeta en esta linea

carpeta = "C:\Documents and Settings\"

3. Te pego aquí la macro para que te la ponga en varias líneas

Sub unir()
'Por.Dam
carpeta = "C:\Documents and Settings\"
Workbooks.Open Filename:=carpeta & "archivo1.xls"
Workbooks.Open Filename:=carpeta & "archivo2.xls"
Workbooks.Open Filename:=carpeta & "archivo3.xls"
Set a1 = Workbooks("archivo1").Sheets("Hoja1")
Set a2 = Workbooks("archivo2").Sheets("Hoja1")
Set a3 = Workbooks("archivo3").Sheets("Hoja1")
Set u1 = Workbooks("union").Sheets("compendio")
a1.Activate
ufila = ActiveCell.SpecialCells(xlLastCell).Row
Range("A1:F" & ufila). Copy u1. Range("A3")
a2.Activate
ufila = ActiveCell.SpecialCells(xlLastCell).Row
Range("A1:D" & ufila).Copy u1.Range("G3")
a3.Activate
ufila = ActiveCell.SpecialCells(xlLastCell).Row
Range("A1:G" & ufila).Copy u1.Range("K3")
End Sub

4. Te anexo un archivo con información de excel y de macros. El entorno de excel y sus funciones, así como la iteracción que tiene con visual basic es muy extensa, por lo que no encontrarás todo en un solo manual.

https://www.dropbox.com/s/qv9gicilhe977b7/excel-con-vba.pdf

Saludos. Dam

Por favor, podrías finalizar la pregunta y crear una nueva por cada duda.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas