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:
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.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
desde ya gracias. saludos