Ricerca Excel



  • Ricerca Excel
    di cicc105 (utente non iscritto) data: 14/03/2014 20:53:39

    Ricerca Excel di cicc105 (Utente non iscritto) data: 14/03/2014 20:41:47

    Ciao a tutti, sono un novello scopritore del potenziale del VB applicato ad excel.
    Dunque mi trovo in una situazione complicata dato che conosco solo il linguaggio C, ma aiutandomi con queste
    poche conoscenze sto iniziando un nuovo lavoro.

    Dunque mi ritrovo a dover lavorare su di un database fatto con excel (non posso usare Access perchè non tutte le postazione che andranno a ricercare informazioni hanno installato quest'ultimo).
    Questo foglio è formato da n colonne e righe che via via aumenteranno; tra queste colonne due sono molto importanti.Una contiene un testo all'interno sul quale dovrò andare a ricercare, attraverso una parola chiave, il record (o riga) che contiene ciò che mi serve e, la seconda colonna contiene collegamenti ipertestuali che puntano a dei documenti.

    Mi è stato chiesto che il programma funzioni più o meno come la funzione trova tutti cioè:
    -In una TextBox inserisco una parola chiave
    -questa verrà ricercata solo in una colonna
    -tutte le celle di questa colonna (e le righe in cui esse sono contenute) devono essere stampate in una finestra (io ho usato un finestra di riepilogo ListBox).

    Il textbox e la listbox fanno parte di una useform creata.

    Ora non riesco più andare avanti con il mio progetto infatti vorrei che:

    tra le n righe stampate (perchè rispondono al mio criterio di ricerca) vado ad individuare quella che mi interessa,
    la clicco ma non fa nulla. Il risultato che vorrei (non so se è realizzabile) sarebbe che al doppioclick del mouse sul record mi venisse aperto il link del documento (link inserito in una colonna apposita).

    Questa è la soluzione per cui ho optato non so se è la migliore (anzi io avevo creato una useform totalmente diversa che mi forniva una visione record per record) ma al capo piacerebbe più una soluzione che vi ho spiegato in precedenza.

    Spero di essere stato abbastanza chiaro

    Buon Lavoro :)




     
    Private Sub UserForm_Click()
            'calcolo la data di sistema e la salvo su una variabile
            'creo la riga descrizioni della ListBox
            FrmScaduti.LstScaduti.AddItem "Titolo"
            FrmScaduti.LstScaduti.List(RigaLista, 1) = "Editore"
            FrmScaduti.LstScaduti.List(RigaLista, 2) = "Cognome Nome"
            FrmScaduti.LstScaduti.List(RigaLista, 3) = "Telefono"
    
            
            RigaLista = 0
            ActiveSheet.UsedRange.Select
            riga = Worksheets(1).UsedRange.Rows.Count
            For Indi = 2 To riga
                If InStr(Range("D" & Indi), TextBox1.Text) <> 0 Then
                    RigaLista = RigaLista + 1
                    FrmScaduti.LstScaduti.AddItem Range("A" & Indi)
                    FrmScaduti.LstScaduti.List(RigaLista, 1) = _
                    Range("B" & Indi)
                    FrmScaduti.LstScaduti.List(RigaLista, 2) = _
                    Range("C" & Indi)
                    FrmScaduti.LstScaduti.List(RigaLista, 3) = _
                    Range("D" & Indi)
                End If
            Next
    End Sub
    



  • di Zer0Kelvin data: 14/03/2014 23:19:27

    Ciao.
    Sarebbe MOLTO meglio se tu fornissi un file di esempio su cui lavorare.
    PS: "buon lavoro" non mi sembra molto felice come saluto...



  • di cicc105 (utente non iscritto) data: 14/03/2014 23:44:04

    Ciao,
    il mio non era un Buon Lavoro inteso "lascio a voi la patata bollente" XD Era inteso più come buon proseguimento con VB o buona scrittura di nuovi codici...mi sono spiegato male XD

    cmq ho allegato il file rar in cui ho messo un foglio excel che riporta un esempio di tabella:
    La colonna D è quella in cui andrò a ricercare la mia parola chiave,
    La colonna A contiene i link al documento.

    Se poi si va proprio nella pagina di VBA ci sono due form...
    La UserForm è quella che avevo pensato di utilizzare il ma, a quanto pare, non piace l'idea di dover fare avanti ed indietro tra i risultati. Si preferirebbe avere una panoramica dei "papabili" (cosa che ho fatto con la LstScaduti) per poi interagire.
    Ecco a me questo interagire mi è totalmente oscuro, cioè non ho idea di come fare per rendere interattiva un record

    Spero mi possiate dare un input su dove sbattere la testa...;)

    Grazie mille, Buona serata a tutti



  • di lepat (utente non iscritto) data: 15/03/2014 08:31:24

    la prima cosa da fare è creare un pulsante da associare ad una macro per attivare la userform, poi inserire il codice in UserForm_Initialize() e non in UserForm_Click()

     
    sub pulsante_clic
    userform1.show
    end sub
    



  • di lepat (utente non iscritto) data: 15/03/2014 08:33:54

    e poi scaricare qualche esempio funzionante e studiarselo



  • di cicc105 (utente non iscritto) data: 15/03/2014 09:52:20

    Ho seguito i tuoi consigli ed inoltre, come mi hai consigliato, ho cercato diversi esempi per quanto riguarda l'iterazione con la finestra di riepilogo.

    Ora ho trovato una soluzione che mi andrebbe a genio. In pratica una volta cliccato sul record che mi interessa, su di un label mi viene copiato il testo corrispondente alla cella che contiene il collegamento ipertestuale.

    Ho ipotizzato di lavorare in due modi:
    -facendo si che cliccando sul label si apra il collegamento ipertestuale
    -navigare attraverso browser nel mio disco rigido in questo modo:

    'Dim IE As Object
    'Set IE = CreateObject("InternetExplorer.Application")
    'IE.Visible = True
    'Go to this Web Page!
    'IE.navigate "Label1.Text"

    dove label1.test è il link del percorso da browser...

    però qualcosa non mi torna infatti Explorer si apre ma non trova la pagina

    Grazie in anticipo



  • di lepat (utente non iscritto) data: 15/03/2014 11:41:55

    allega un nuovo file con tutti gli aggiornamenti



  • di Zer0Kelvin data: 16/03/2014 00:16:39

    Ciao.
    Perchè hai messo Label1.Text fra virgolette?
    Se hai scritto così nel codice, Explorer cercherà un file di nome Label1.Text; togli le virgolette e vedi se funziona.
    PS: ad explorer potrebbe servire il percorso completo del file.