Búsqueda de dato en varios libros

Buenas expertos,

Quisiera hacer una consulta de un dato en varios libros y si existe que me devuelva el valor de varias celdas.

Me explico un poco mejor, tengo un directorio llamado facturas, donde guardo la facturas generadas, y lo qui quiero es hacer una consulta que acceda a todos los libros de esa carpeta y me devuelva unos datos.

Ejemplo

Consultar por DNI, que me revise en todos los libros de la carpeta o directorio llamada FACTURAS ( el libro solo tiene una hoja, puesto que es la factura digitalizada ) si en el campo d10 existe dni, que  me devuelva el valor de b6 y b7 ( de todos los libros de esa carpeta ) ya que el cliente puede tener varias facturas durante todo el año.

Las facturas (libros ) tienen el nombre 1,2,3, etc

Respuesta
1

En el siguiente enlace te dejo un ejemplo programado y estas son las instrucciones:

-Baja el archivo del enlace y guárdalo en la misma carpeta de los otros excel

-Una vez todos juntos abre el fichero que te he enviado y ejecuta la macro pulsando en el botón

http://share.myflare.com/8LQpT2 

Recuerda valorar la respuesta

Hola Luis,

Copio el fichero como me dices en la carpeta donde están las hojas ( FACTURAS), y una vez copiado ejecuto el que me has mandado y pulso el botón y no hace nada.

Hay que añadir una línea a la macro. Te la copio aquí íntegramente. La única línea nueva es la que pone:

ChDir ruta

Sub proceso()
'por luismondelo
mio = ActiveWorkbook.Name
ruta = ActiveWorkbook.Path & "\"
ChDir ruta
archi = Dir("*.xl*")
Do While archi <> ""
If archi = mio Then GoTo salto
Workbooks.Open archi
otro = ActiveWorkbook.Name
If Range("d10").Value <> "" Then
Sheets(mio).Sheets(1).Range("a65000").End(xlUp).Offset(1, 0).Value = Range("b6")
Sheets(mio).Sheets(1).Range("b65000").End(xlUp).Offset(1, 0).Value = Range("b7")
Sheets(mio).Sheets(1).Range("c65000").End(xlUp).Offset(1, 0).Value = archi
End If
Workbooks(otro).Close False
salto:
archi = Dir()
Loop
End Sub

Luis te mando un correo, no me funciona. Da un error en línea de macro

Disculpa Fran, tenía un error de sintaxis... te adjunto aquí la macro integra para que la sustituyas en su totalidad

Sub proceso()
'por luismondelo
mio = ActiveWorkbook.Name
ruta = ActiveWorkbook.Path & "\"
ChDir ruta
archi = Dir("*.xl*")
Do While archi <> ""
If archi = mio Then GoTo salto
Workbooks.Open archi
otro = ActiveWorkbook.Name
If Range("d10").Value <> "" Then
Workbooks(mio).Sheets(1).Range("a65000").End(xlUp).Offset(1, 0).Value = Range("b6")
Workbooks(mio).Sheets(1).Range("b65000").End(xlUp).Offset(1, 0).Value = Range("b7")
Workbooks(mio).Sheets(1).Range("c65000").End(xlUp).Offset(1, 0).Value = archi
End If
Workbooks(otro).Close False
salto:
archi = Dir()
Loop
End Sub

¡Gracias!  Luis ahora Si.

Buenos Días,

¿Cómo puedo decirle que valla a una carpeta concreta? por ejemplo  c:\facturas

modifico la linea   ruta = ActiveWorkbook.Path & " C.\facturas\"  y  cuando ejecuto la macro me da error en la siguiente linea :

ChDir ruta

                    

Si quieres hacer esa modificación, simplemente tienes que borrar la línea:

ChDir ruta

Pero mi método era para que funcionara dentro de la carpeta en la que tengas grabado el fichero de la macro, sin preocuparte de como se llame la carpeta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas