È soltanto un Pokémon con le armi o è un qualcosa di più? Vieni a parlarne su Award & Oscar!

Excel Forum Per condividere esperienze su Microsoft Excel

Vedere se esiste file in una cartella

  • Messaggi
  • OFFLINE
    dadeneli
    Post: 11
    Registrato il: 02/03/2015
    Età: 36
    Utente Junior
    2010
    00 30/11/2016 15:14
    Buonasera a tutti,

    all'interno di una cartella ho tanti file pdf e un file excel.
    Nella colonna A del file excel ho un elenco con dei nomi.
    Vorrei che nella colonna B mi dica se il file della colonna A esiste o no nella cartella.

    Esempio.
    In A2 c'è scritto "1758", in B2 mi scrive "ok" se nella cartella c'è il file "1758", niente altrimenti.


    Esiste una formula di ricerca file, o devo ricorrere al VBA?
    Nel caso debba ricorrere al VBA, cosa mi consigliate?

    Grazie
  • OFFLINE
    alfrimpa
    Post: 2.459
    Registrato il: 21/06/2013
    Città: NAPOLI
    Età: 70
    Utente Veteran
    Excel 365
    00 30/11/2016 15:55
    Ciao dadeneli

    Un punto da cui partire potrebbe essere questa fanction

    vb
    Function IsFile(ByVal fName As String) As Boolean
        On Error Resume Next
        IsFile = ((GetAttr(fName) And vbDirectory) <> vbDirectory)
    End Function
    


    Quindi se sul foglio in A1 c'è il nome del file completo di percorso tipo C:\TuaDirectory\TuoFile.ext

    e in B1 scrivi

    vb
    =SE(isfile(A1)=VERO;"ok";"")


    Ti restituirà "ok" se il file esiste e nulla se il file non c'è.

    Alfredo
  • OFFLINE
    patel45
    Post: 3.497
    Registrato il: 13/03/2012
    Città: LIVORNO
    Età: 78
    Utente Master
    2010
    00 30/11/2016 16:03
    oppure una sub
    Sub FileExist()
    for r = 2 to 10
      fname = "C:\percorso\" & Range("A" & r) & ".pdf"
      FileInQuestion = Dir(fname)
      If FileInQuestion <> "" Then Range("B" & r) = "OK"
    next
    End Sub
    [Modificato da patel45 30/11/2016 16:04]

    ----------
    Win 10 - Excel 2010
    allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
  • OFFLINE
    dadeneli
    Post: 11
    Registrato il: 02/03/2015
    Età: 36
    Utente Junior
    2010
    00 30/11/2016 16:34
    Ciao Alfredo,

    grazie per la risposta.

    La soluzione da te proposta mi dava errore #NOME.
    Mi sono andato a vedere la funzione GetAttr e ho provato a modificare in questo modo:

    Function IsFile(ByVal fName As String) As Boolean
        On Error Resume Next
        IsFile = GetAttr(fName)
    End Function
    


    Ora mi funziona, ma non vorrei che tralascio qualcosa.

    Cosa cambia con l'istruzione scritta da te?
    IsFile = ((GetAttr(fName) And vbDirectory) <> vbDirectory)

    Grazie ancora