Realizar búsquedas en Excel desde Visual Basic.

Estoy desarrollando un pequeño sistema en el cual desde una base de datos de equipos de computo echa en excel el usuario pueda consultar las computadoras dependiendo sus características es decir: deseo hacer consultas desde la aplicación desarrollada en Visual Basic en una hoja de Excel, ya sea que la hoja de excel sea mostrada desde mi aplicación en visual o que busque directamente en el archivo .xls, pero eh tenido algunos problemas y no puedo generar el código que logre hacer esto; ojala alguien me pueda ayudar.
No se como sea más conveniente, si mostrar la hoja de exel en la aplicación y y ya desde ahí hacer las búsquedas y resaltar los resultados que satisfagan las condiciones del usuario o que lo busque directamente en el archivo y solo muestre los resultados es decir:
El usuario pide:
  Muéstrame todos los equipos con procesador "amd" y que el programa haga la búsqueda en la hoja de excel y muestre todas las computadoras con procesadores amd

1 respuesta

Respuesta
1
Tiene que ser si o si en Excel, porque te vas a complicar un poco más. Para mi lo más sencillo seria hacer todo desde el vb, con una bd access, ademas también lo puedo hacer desde el excel con los autofiltos y demás ahora el excel 2007 tiene un par de cosas interesantes en ese aspecto, aunque para cosas sencillas se hizo un poco más incomodo, pero ese es otro tema.
En definitiva:
1) ¿Tiene qué ser si o si en excel?
2) ¿Tiene qué ser una aplicación? Porque o se puede hacer desde el excel o crear algún macro.
Por lo que dices de que posibilidad de buscar directamente desde el xls, lo mejor seria hacer un macro, y si quieres proteger tu código ponele una contraseña, me parece lo más sensato.
No es que no se pueda hacer así, pero por lo que dices no le veo justificativo, lo más conveniente o hacerlo desde el excel directo, si quieres vender algo has un macro, y sino haría una bd en access que "para mi" es más cómodo.
O te pidieron un desarrollo con esas caracteriasticas, dices que estas trabado en el código, dinos en que parte.
Lo de los macros (yo no los uso, salvo que sea muy necesario o tenga que ser un addon para office) lo dije como alternativa, yo siempre lo hago todo desde vb, me es más cómodo y estoy acostumbrado así.
Hola, gracias por responder a mi pregunta;
A lo que me comentas, no, las búsquedas no tienen que ser echas en excel forzosamente de echo también he trabajado en access como tu, pienso que es más fácil lo que pasa es que me dijeron que tal vez en excel seria más fácil hacer las búsquedas que necesito. Lo que ocurre es que desde VB tengo que hacer búsquedas en una BD ya sea en excel o access, estuve intentando hacerlo para access pero no lo logre.
Este es el código que tengo en el formulario de visual basic que hace las búsquedas en la base de datos de access:
Dim buscando As String, criterio As String
buscando = InputBox("QUE TIPO DE PROCESADOR QUIERES EN TU EQUIPO")
criterio = "ORDENADORES like'*" & buscando & "*'"
VENTAS.Recordset.MoveNext
VENTAS.Recordset.FindFirst criterio
If VENTAS.Recordset.NoMatch Then
VENTAS.Recordset.MoveLast
MsgBox ("NO HAY ORDENADORES CON ESTAS CARACTERISTICAS"), vbCritical
End If
Donde si el usuario pide buscar equipos con procesadores AMD se hace la búsqueda pero solo me muestra el primer resultado encontrado descartando así todos los demás por lo tanto no puedo usar este código pues debo mostrar todos los equipos con procesador AMD no solo el primero que encuentra en la base.
Ojala me sigas ayudando y una ves más gracias.
El problema es que usas FindFirst, Que usas dao, o peor aun el control data, yo lo use cuando aprendí a programr en vb, hace más de 10 años y después de conocer ado nunca más use otra cosa.
FindFirst, busca en el primero, último, siguiente o anterior registro, peor tienes que desplazarte por cada registro con movenext.
En cambio si utilizas una consulta sql, que es más robusta, devolvés todos los datos que se ajuste a tu criterio de búsqueda, con lo cual puedes enlazarlo a cualquier control, ademas de que después te muves pero dentro de los resultados de tu consulta.
Te recomendaría si te esta dando problemas, isertes un control ado en tu formulario.
Acá respondí sobre esto espero que te sirva
http://www.todoexpertos.com/mitodoexpertos/answer/1853071/hacer-un-seleccion-con-el-recordset
Te dejo esta otra respuesta que hablo del control MSHFlexGrid
que por ahí te sirva para presentar los datos.
http://www.todoexpertos.com/mitodoexpertos/answer/1853046/procedimiento-en-visual-basic-6
Hola mi estimado, gracias por seguir ayudándome, entendí un poco lo que me dices, la vdd yo apenas empiezo en esto del diseño de sistemas, todos con el control DATA pero ahora me surgió este problemilla, la vdd no domino bien las sentencias de SQL pero más o menos entendí lo que me quieres decir, lamentablemente no pude entrar a los links que me pasaste, pues primero me salio una pantalla que no podía porque no era experto entonces ya acepte para ser experto y después de esto me salio esta imagen:

En fin, hay algún código especial, para que usando el mismo control DATA haga la búsqueda y muestre todos los registros que concidan con lo requerido y no solo con el primer registro encontrado.
Bueno gracias por ayudarme, hasta pronto.
Si perdón si bien creo que me había inscirpto en esta página es la primera vez la uso.
Y no se porque cuando respondo no aparece publico, y me pone no disponible cuando ya lo cambie, no se porque es así perdón. Si con el control data se puede solo que tienes que hacer que busque en todos los registros te mueves con el movenext, y recuperas los registros pero ya no me acuerdo como eran lo códigos, pero te lo preparo para dentro de un rato, es algo sencillo, yo porque pensé que recién empezabas pero con el vb. Me levente hace un rato y medio mal, en un rato subo el código.
Siempre puedes buscar en el cd de ayuda de vb, el msdn.
Quedaría algo así, espero que te sirva, es una adaptación de tu código, que es lo que tenia que hacer en un principio, perdón, para la próxima se lo que tengo que hacer, jaja te lo complique mucho si ya tenias una idea. Jaja.
Option Explicit
Dim buscando As String, criterio As String
buscando = Trim(InputBox("QUE TIPO DE PROCESADOR QUIERES EN TU EQUIPO"))
criterio = "Author  like '" & buscando & "*'" 'ORDENADORES
Data1.Refresh
With Data1.Recordset
    ' Llena el Recordset.
    .MoveLast
    'Nos movemos al principio
    .MoveFirst
    .FindFirst criterio
    If .NoMatch Then
        MsgBox ("NO HAY ORDENADORES CON ESTAS CARACTERISTICAS"), vbCritical
    End If
    Do While Not .EOF
        'acá va el código de lo que quieras que haga _
        C/ REG. ENCONTRADO.
        'sig. Reg.
        .MoveNext
    Loop
End With
Nota: El bloque With es para hacer eferencia al control data una sola vez.
Do While Not .EOF se ejecuta el bloque siempre que no encuentre el final.
Saludos. Capo.
Me olvidaba donde dice "Author" cabía por ORDENADORES, yo lo cambie para probarlo con la BD biblio que viene con el vb. Y en el criterio le saque el ultimo * para que busque desde el principio de la cadena de búsqueda, y el trim es para sacarle los espacios al principio y al final, así nos queda la cadena limpia.
Para usar excel usa la propiedad Connect del control data.
Hola mi estimado Capo, Una disculpa pero se me junto todo el trabajo del proyecto y no había podido entrar a agradecerte la ayuda; En fin, Gracias por la ayuda, los conejos y sobre todo por tu tiempoq invertiste para ayudarme.
Un Saludo y nuevamente Gracias.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas