Macro que llame a otro archivo xls. Lea los valores de 2 columnas especificas y luego las copie en..

Tengo un libro1.xlsx
El cual tiene una hoja (master) que está construida de la siguiente manera.
Columna A (INDICE) - Es decir no se repite.(Numérico)
Columna B (Nombre)
Columna C (NumeroX) - Numérico
Columna D (Descriptor)
Columna E (Descriptor 2)
Columna F (Descriptor 3)
Columna H (Numero 1) Numérico
Columna I (Numero 2) Numérico
Desde la hoja "master" del libro1.xslx necesito cargar con una macro (con un botón) un archivo libro2.xls (o como se llame) pero que posee la misma estructura.
Es decir:
Ejemplo:
Libro1.xlsx.
celda A2 = 1021201211
celda B2 = horacio
celda C2 = 21
celda D2  = área 24
celda E2 =  sub área 25
celda F2 =  oficio
celda H2 = 1,25
celda I2 = 4,26
después, en la fila3
Celda a3 = 111201211, etc, etc, etc.
Lo que necesito es que primero me pida donde está el archivo a cargar. Luego, que busque por el valor de la celda A2 y me traiga los valores de celda H2 e I2. Y así hasta que llega a la ultima celda no vacía de la columna A.
El otro archivo tiene la misma estructura. Pero le pueden dar el nombre que quieran, no trae todos los índices y es extensión .xls. Lo he hecho con la función buscarv, pero son demasiados registros y el archivo ya me esta pesando demasiado. Con las puras fórmulas.

1 respuesta

Respuesta
1
Pues aquí tienes. Con esta macro se te abre un browser para que elijas el archivo donde están los datos que quieres copiar y seguidamente te lo copia en el tuyo a continuación del último dado que había. He contemplado que los datos se encuentran en la primera pestaña de los archivos, por eso pongo en la macro "sheets(1)". Solo es necesario que adjudiques la macro a un botoncito.
Sub copia_datos()
destino = ActiveWorkbook.Name
nuevo = Application.GetOpenFilename
If nuevo = False Then Exit Sub
Workbooks.Open nuevo
origen = ActiveWorkbook.Name
Sheets(1).Range("a2:i"&Range("a10000").End(xlUp).Row).Copy
Workbooks(destino).Activate
Sheets(1).Range("a" & Range("a10000").End(xlUp).Row + 1).PasteSpecial Paste:=xlValues
Workbooks(origen).Activate
ActiveWorkbook.Close False
End Sub
No olvides puntuar y cerrar la consulta.
Gracias.
Lo que necesito, porque parece que no me expresé bien.
es que.
- Mi columna A (tiene u numero único, nunca se repite) de la hoja master.
- Requiero de una Macro que vaya a BUSCAR, ese mismo número a otro archivo, y cuando lo encuentre, me copie los valoers que se encuentra ne la columna H e I. Es decir. Si encuentra el ÍNDICE, en el otro archivo me traiga los valores que hay en la celda H e I respectivamente.
EJ;
Hoja Maestro:
Fila 10
celda A10 = 12
buscar en el otro archivo el valor que hay en celda A10 (10)  y si existe que me traiga los valores que se encuentran en la columna H e I respectivamente y los pegue en la hoja maestro en la columna H e I.
Más páctico.
hoja maestro
celda
A5120 = 4177        celda H5120 = ""   celda  I5120
buscar en otro archivo "xxx.xls" el valor de celda A5120 (4177) y si existe que me traiga los valores de la  sheet1 (columnas H e I, siempre) donde coincida el valor de la celda.
Entiendo... anota esta macro. Recuerda que solo tienes que tener abierto el archivo master, ya que mediante la macro vamos a elegir nuestro segundo archivo en el que vamos a buscar los datos:
Sub copia_datos()
destino = ActiveWorkbook.Name
huevo = Application.GetOpenFilename
If nuevo = False Then Exit Sub
Workbooks.Open nuevo
origen = ActiveWorkbook.Name
Workbooks(destino).Activate
Sheets(1).Range("a2").Select
Do While ActiveCell.Value <> ""
valor = ActiveCell.Value
Set busca = Workbooks(origen).Sheets(1).Range("a2:a20000").Find(valor, LookIn:=xlValues, lookat:=xlWhole)
If Not busca Is Nothing Then
ActiveCell.Offset(0, 7).Value = busca.Offset(0, 7).Value
ActiveCell.Offset(0, 8).Value = busca.Offset(0, 8).Value
End If
ActiveCell.Offset(1, 0).Select
Loop
Workbooks(origen).Activate
ActiveWorkbook.Close False
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas