Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/09/2010, 07:41
juann2511
 
Fecha de Ingreso: septiembre-2010
Mensajes: 7
Antigüedad: 14 años, 4 meses
Puntos: 0
busqueda en bases

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