Cerca da foglio esterno



  • Cerca da foglio esterno
    di pipp (utente non iscritto) data: 28/04/2015 13:28:40

    salve,
    ho un foglio excel con un elenco di codici e dovrei cercare quei codici dentro un altro foglio excel che si trova memorizzato in c:/
    come posso farlo con VBA??



  • di alfrimpa data: 28/04/2015 13:36:50

    Ciao Pipp

    Sei stato troppo parco nel fornire informazioni.

    Ammesso che i codici (o qualcuno di questi) vengano trovati cosa devi fare?

    Allega i due file di esempio ed indica il risultato che vuoi ottenere.

    Alfredo




  • cerca dati da folgio
    di pipp (utente non iscritto) data: 28/04/2015 14:07:34

    In pratica ho un foglio excel cosi:
    codice cognome nome
    102
    1254

    da vba dovrei prelevare i campi codice ed effettuare una query cosi:
    Select * from ??foglio.xls where codice='" & codice &"'"
    e scrivere i dati relativi su cognome e nome.



  • di alfrimpa data: 28/04/2015 14:25:44

    Ciao Pipp

    Perché "scomodare" il VBA quando puoi utilizzare il semplice CERCA.VERT?

    Alfredo
     
    =CERCA.VERT(A1;'C:Excel[rubrica.xlsx]Foglio1'!A1:C3;2;FALSO) da adattare con i tuoi riferimenti






  • di alfrimpa data: 28/04/2015 14:28:14

    Aggiungo che, per quanto ne sappia, non ho mai visto istruzioni SQL in un codice VBA.

    Ma, ripeto, potrebbe essere per mia ignoranza.

    Alfredo





  • di pipp (utente non iscritto) data: 29/04/2015 07:27:37

    Hai ragione, il problema è che ho una procedura fatta in un modulo VBa e dovrei fare quella ricerca.



  • di alfrimpa data: 29/04/2015 10:39:34

    Ciao Pipp

    Ricordo che tempo fa ho aperto su questo (ed altri forum) una discussione proprio per chiedere se c'era modo di "trasformare" la formula in questione in codice VBA attraverso l'istruzione Application.WorkSheetFunction.VLookup(....) non ricevendo, purtroppo, risposte risolutive.

    Il problema è come fare ad indicare in VBA come secondo parametro del VLookup la matrice comprensiva del nome del file e del suo percorso.

    Speriamo che qualche utente esperto ci possa indicare la strada.....

    Alfredo





  • di HB (utente non iscritto) data: 29/04/2015 17:18:33

    Un saluto a tutto il Forum!

    Ciao ragazzi,
    il VLookup utilizzato con la Worksheetfunction riesce a leggere un range relativo ad un file esterno soltanto se quest'ultimo è aperto.

    Pertanto, potrebbe essere una cosa di questo tipo:
    - apertura della cartella di ricerca in modalità nascosta
    - dichiarazione (Set) del range di ricerca
    - funzione VLookUP
    - chiusura della cartella
     
    'se la cartella dei dati è chiusa bisogna quindi aprirla:
    Sub vlookUP_wkFunction()
        Dim wb As Workbook, dati As Range
    
        Application.ScreenUpdating = False
        Set wb = Workbooks.Open("C:Excel
    ubrica.xlsx")
        Set dati = wb.Sheets("Foglio1").Range("A1:C10")
        Windows(1).Visible = False
        Application.ScreenUpdating = True
    
        [cella] = WorksheetFunction.VLookup([A1], dati, 2, False)
    
        wb.Close False
    End Sub
    
    'se la cartella dei dati fosse aperta, allora si potrebbe....
    Sub vlookUP_wkAperto()
        [cella] = WorksheetFunction.VLookup([a3], Workbooks("rubrica.xlsx").Sheets("Foglio1").Range("A1:C10"), 2, False)
    End Sub
    
    Lascio a voi "unire" le due routine...
    
    
    
    Oppure utilizzate il metodo Formula, variante Inglese o locale (papale papale alla formula in Excel italiano) :
     
    Sub vlookUP_Formula()
        [cella].Formula = "=vlookup(A1,'C:Excel[rubrica.xlsx]Foglio1'!$A1:$C10,2,FALSE)"
        'eventuale conversione in valore
        '[cella] = [cella].Value
    End Sub
    
    Sub vlookUP_FormulaLocal()
        [cella].FormulaLocal = "=CERCA.VERT(A1;'C:Excel[rubrica.xlsx]Foglio1'!A1:C10;2;FALSO)"
        'eventuale conversione in valore
        '[cella] = [cella].Value
    End Sub



  • di alfrimpa data: 29/04/2015 20:25:40

    Ciao HB e grazie del tuo intervento.

    In verità, alle due soluzioni che hai proposto ci avevo pensato anch'io ma il mio "sfizio" era quello di trovare un modo "diretto" che evidentemente, come tu hai detto, non c'è.

    Alfredo




  • Cerca da foglio esterno
    di Marius44 data: 30/04/2015 17:24:39

    Ho provato a smanettare con le formule proposte e credo (non mi ritengo un esperto) di aver trovato la soluzione.
    Nei miei tentativi mi trova il dato "con il file dove cercare CHIUSO" se cambio da x in m l'ultima lettera del suffisso alla voce rubrica, cioè metto "rubrica.xlsm" invece di "rubrica.xlsx".
    Ho ragione?