Buenas gente,, estoy con un tema ya hace rato tratando de sacarlo pero no hay chance, a ver si a alguien se le ocurre algo
Tengo distintos libros con muchos datos, entre ellos, domicilios, telefonos, nombres, dnis, etc.
Mi trabajo consiste en ahora crear una especie de buscador en todos estos archivos y me devuelva todos los registros de cada libro en donde aparece almenos una vez en alguna de las celdas la palabra buscada.
Estoy lo estoy haciendo con una macro en excel (porque son todos archivos de excel) con conexiones ADOs. Lo que hice fue lo siguiente..
Código:
Sub ass()
Dim i As Integer
Dim Libros
Libros = Array("") 'la defino asi para poder hacer lo siguiente ->
' aca se van a ir guardando todas las direcciones de los archivos que yo vaya eligiendo
If UBound(Libros) = 0 Then
If MsgBox("En que archivo desea buscar?", vbOKCancel) <> vbCancel Then
Libros(0) = Application.GetOpenFilename
Do While MsgBox("Desea buscar en algun" & vbCr & "otro archivo?", vbOKCancel) <> vbCancel
ReDim Preserve Libros(UBound(Libros) + 1) ' se va agrandando Libros y le voy poniendo las
Libros(UBound(Libros)) = Application.GetOpenFilename ' dir de los archivos que quiero
Loop
Else
GoTo 2:
End If
Else
Do While MsgBox("Desea ingresar algun archivo?", vbOKCancel) <> vbCancel
ReDim Preserve Libros(UBound(Libros) + 1)
Libros(UBound(Libros)) = Application.GetOpenFilename
Loop
End If
2:
' aca se hace el proceso de importacion para todos los elementos del array libro
For j = 0 To UBound(Libros) Step 1
Dim conexion As ADODB.Connection, rs As ADODB.Recordset
Set conexion = New ADODB.Connection
conexion.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & Libros(j) & _
";Extended Properties=""Excel 12.0;HDR=No;""" 'HDR = No, aparece con encabezado
'HDR = Yes , no aparecen
' Nuevo recordset
Set rs = New ADODB.Recordset
With rs
.CursorLocation = adUseClient
.CursorType = adOpenStatic
.LockType = adLockOptimistic
End With
rs.Open "SELECT * FROM [hoja1$]", conexion, , , adCmdTxt
Cells(700000, 1).End(xlUp).Offset(2, 0).CopyFromRecordset rs
rs.Close
conexion.Close
Next
End Sub
Lo que yo quisiera en realidad es en vez de esto: "SELECT * FROM [hoja1$]" que me trae todos los campos de la hoja1, poner una sentencia que me traiga todos los registros que cumplen en almenos un campo con una caracteristica especifica.
desde ya gracias. saludos