Buscar Columna de códigos en Varios Libros

Hola Amigo:
Sabes, tengo un código N°orden de compra que se encuentra en un libro pero tengo 50 libros donde buscarlo. Como puedo pedirle a excel que me diga en que libros esta.
Muchas Gracias

1 respuesta

Respuesta
1
Usualmente, en la pantalla de diálogo de la opción "Archivo" | "Abrir" basta colocar en la casilla "Texto o Propiedad" el valor a buscar y, luego, presionar el botón de Búsqueda Avanzada" para que MS Excel intente encontrar el dato en los archivos del directorio indicado. Desde luego, esto toma su tiempo, pero suele funcionar bien.
En caso de que así no fuese y tengas la certeza de que el dato está en alguno de esos 50 archivos, una alternativa de solución es utilizar una macro para que realice la búsqueda, hoja por hoja de archivo por archivo que esén incluidos en una carpeta.
Para su funcionamiento solo necesitas crear un archivo nuevo que será un auxiliar para juntar todos los archivos en un único archivo.
Este archivo debe tener una sola hoja llamada INICIO.
En ella, coloca en la celda C7 la dirección de la carpeta donde debe buscar todos los archivos.
En la celda C8, ingresa qué tipo de archivos debe considerar. Esto te permite, seleccionar algunos de los archivos del directorio indicado en C7. Así, por ejemplo, si quieres que sólo considere los archivos que empiezan con "Cod", coloca en esa celda:
Cod*.xls
Si quieres que traiga todos los archivos, simplemente deja en tal celda:
*.xls
La celda C9 permite que coloques una clave, en caso de que los archivos a abrir tuvieran la misma clave de protección para apertura.
Si no tuviesen clave, deja esa celda en blanco.
Finalmente, coloca en la celda C10 el valor (código) a buscar.
Graba este archivo.
Ahora falta colocar la macro que hace el trabajo.
Activa el editor de Visual Basic (presiona Alt+F11), inserta un nuevo módulo ("Insertar", "´Modulo") y pega el siguiente código:
Sub BusqVsFiles()
Dim MiCarpeta As String, MisArchivos As String, MiClave As String
MiCarpeta = Trim(Sheets("INICIO").Range("C7").Value) & IIf(Right(Trim(Sheets("INICIO").Range("C7").Value), 1) = "\", "", "\")
MisArchivos = Trim(Sheets("INICIO").Range("C8").Value)
MiClave = Trim(Sheets("INICIO").Range("C9").Value)
aBuscar = Trim(Sheets("INICIO").Range("C10").Value)
encontr = False
With Application.FileSearch
.LookIn = MiCarpeta
.SearchSubFolders = True
.FileName = MisArchivos
If .Execute(SortBy:=msoSortByFileName, SortOrder:=msoSortOrderAscending) > 0 Then
For i = 1 To .FoundFiles.Count
DirFile = .FoundFiles(i)
Workbooks.Open FileName:=DirFile, Updatelinks:=False, PASSWORD:=""
Application.Calculation = xlManual
ActiveWorkbook.Unprotect PASSWORD:=MiClave
'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'
'* TAREA A EFECTUAR en archivo: BUSCAR DATO EN TODOS LOS ARCHIVOS *'
'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'
Application.ScreenUpdating = False
For sht = 1 To Sheets.Count
Sheets(sht).Select
Set c = Cells.Find(aBuscar, LookIn:=xlValues)
If Not c Is Nothing Then
encontr = True
c.Select
Application.ScreenUpdating = True
MsgBox "Su búsqueda de " & aBuscar & "fue exitosa", vbInformation, "ENCONTRADO!!!"
Set c = Nothing
Exit Sub
Else
ActiveWorkbook.Close False
Sheets("INICIO").Select
End If
Next
Set c = Nothing
Application.ScreenUpdating = True
'==========================================================================
' FIN tarea en archivo
'==========================================================================
Next i
If encontr = False Then MsgBox "El valor " & aBuscar & "no fue encontrado en los " & i - 1 & " archivos revisados", vbCritical, "NO ESTA, (parece)"
Else
MsgBox "No se encontró ningún archivo " & MisArchivos & " en " & Chr(10) & MiCarpeta
End If
End With
End Sub
Hacia la mitad de la macro notarás que está indicada cual es la tarea que debe realizar en cada archivo.
De esta manera, si otro día quieres hacer otra cosa con varios archivos en un directorio, bastará que coloques el código a ejecutar en este lugar.
Cierra el editor de visual basic y graba el archivo.
El toque final sería colocar un botón en la hoja INICIO para activar la macro.
Para esto, una vez copiada la macro en el archivo, muestra la barra de herramientas de "Formularios" ("Ver" | "Barras de herramientas" | "Formularios".
De ella, toma el icono de "botón" y dibújalo en tu hoja. Al haber presionado el icono, el cursor del mouse se transformará en una cruz fina. Mantén presionado el botón derecho y arrástralo hasta donde desees dibujando el botón.
Cuando sueltes la tecla, automáticamente aparecerá la lista de macros disponibles de dónde podrás seleccionar el que quieres asociar. Simplemente, dale doble click.
También, puedes cambiar la vinculación de un botón con una macro, dando click derecho sobre él y eligiendo "Asignar macro". Otra vez, la lista de macros disponibles te permitirá realizar tal asignación.
Listo. Tienes un archivo que abrirá uno a uno los que encuentre en la carpeta y revisará cada hoja en él. Si no encuentra el valor indicado en C10, cerrará ese archivo. Luego hará lo propio con el siguiente y así, hasta terminar con todos los indicados o hasta que encuentre una coincidencia.
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
A cambio de mi tiempo, sólo te pido dos cosas:
- Finaliza (con puntaje y comentario) esta pregunta
- Ingresa al sitio www.porloschicos.com y, si quieres,
presiona el botón de donación (es gratis).
Confío en que lo harás.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas