Verifica se cartella esiste

di il
7 risposte

Verifica se cartella esiste

Ho dei file  in cartella specifica e quindi vorreii verificare se esiste.

I vari percorsi sono lvati in un arrai di questo tipo

percorso("c:\dir\", ""c:\dir1\", "c:\dir2")

Private Sub controllo_cartella(percorso)
Dim i As Integer
Dim path As String
Dim strFileExists As String
For i = 0 To UBound(percorso)
path = percorso(i)
strFileExists = Dir(percorso(i), vbDirectory)
MsgBox percorso(i)
If strFileExists = "" Then
path = percorso(i)
End If
Next
End Sub

La cartella quandoi trovata salva il percorso in path ed uscire dal ciclo per poi aprire la cartella con al funzione  Shell "explorer.exe 

7 Risposte

  • Re: Verifica se cartella esiste

    25/02/2025 - lucavalentino ha scritto:

    Ho dei file  in cartella specifica e quindi vorreii verificare se esiste.

    I files o la cartella ? 

    25/02/2025 - lucavalentino ha scritto:

    La cartella quandoi trovata

    Sulla base di cosa ? ... qual'è la cartella da trovare ? una qualsiasi che esiste sia nell'array che nel disco ?

    25/02/2025 - lucavalentino ha scritto:

    salva il percorso in path ed uscire dal ciclo

    Però dal ciclo si esce almeno con  un "Exit For" ... se ha trovato la cartella perchè iterare su tutti gli Items dell'array ?

    Boh... molta confusione, poca chiarezza, non si capisce la logica, viene solo voglia di non rispondere a certi post...ma com'è stò fatto ?...  (poi per cose così banali)

    Itanto, o almeno, scriviamo un codice funzionante... almeno il passaggio dei parametri... o no ?  Poi il codice si commenta, almeno una finta riga di commenti di cosa fa il codice sarebbe il minimo...  e poi, ...poi basta! non ha senso!

    Un semplice esempio di come scrivere due righe di codice:  (non entro in merito della logica e utilità che non si capisce quale sia...boh)

    Private Sub controllo_cartella(percorso() As String)
        Dim i As Integer
        Dim path As String
        Dim strFileExists As String
    
        ' loop through all the paths in the array
        For i = 0 To UBound(percorso)
            ' check if the directory exists
            path = percorso(i)
            strFileExists = Dir(path, vbDirectory)
    
            ' check if found
            If strFileExists <> "" Then
                ' open the folder in Windows Explorer
                Shell "explorer.exe " & Chr(34) & path & Chr(34), vbNormalFocus
                ' exit for or exit sub
                Exit For
            End If
            
        Next
    End Sub
  • Re: Verifica se cartella esiste

    @Lucavalebtino controlla quello che hai scritto e anche il codice perchè sembra che ci siano parti mancanti che non fanno capire nulla

  • Re: Verifica se cartella esiste

    Mi spiego meglio.

    Il nome della cartella da trovare ha  un id recuperato dalla tabella del db .

    La cartella può essere per esempio:

    C:\dir\foto\id oppure C:\dir\img\id oppure C:\dir\file\id

    Può esistere solo una cartella con il nome id in una delle cartelle specificate.

  • Re: Verifica se cartella esiste

    Quindi devi controllare se X = A or B or C or D or ...etc.  ?

    Dove X è la Cartella da ricercare   e   A, B, C, D, etc... sono una lista di Cartelle dove ricercare ?

  • Re: Verifica se cartella esiste

    25/02/2025 - By65Franco ha scritto:

    Quindi devi controllare se X = A or B or C or D or ...etc.  ?

    Dove X è la Cartella da ricercare   e   A, B, C, D, etc... sono una lista di Cartelle dove ricercare ?

    Penso che sia così

  • Re: Verifica se cartella esiste

    25/02/2025 - lucavalentino ha scritto:

    Penso che sia così

    ma come "Penso sia così" ? ... se  non lo sai tu chi lo deve sapere. Scusa tanto ma non ti capisco.

  • Re: Verifica se cartella esiste

    Difficilissimo così... bisogna sapersi spiegare bene e sapere cosa si vuole fare

    Tanto per chiudere il discorso ti faccio un ultimo esempio di cui, come dici tu, "Penso che sia così"

    Se devi ricercare se esiste una certa cartella, dato un elenco di cartelle, allora un esempio potrebbe essere questo:

    1. per esempio richiami il metodo in questo modo
      1. si passa come parametro un array che contiene un elenco di cartelle (percorsi)
      2. si passa una striga ,che contiene il nome della cartella da ricercare

        controllo_cartella percorsi, "C:\yourFolderSearch"
      3. eseguire la ricerca della cartella nella lista delle cartelle:

        Private Sub controllo_cartella(percorso() As String, stringFolderSearch As String)
            Dim i As Integer
            Dim folderFound As Boolean
            
            ' set default value
            folderFound = False
        
            ' loop through all the paths in the array
            For i = 0 To UBound(percorso)
                ' check if the directory exists
                If Dir(percorso(i), vbDirectory) <> "" Then
                    ' check if it is a folder
                    If (GetAttr(percorso(i)) And vbDirectory) = vbDirectory Then
                        ' check folder search
                        If percorso(i) = stringFolderSearch Then
                            ' open the folder in Windows Explorer
                            Shell "explorer.exe " & Chr(34) & percorso(i) & Chr(34), vbNormalFocus
                            ' exit loop
                            folderFound = True
                            Exit For
                        End If
                    End If
                End If
            Next
        
            ' if the folder not found
            If Not folderFound Then
                MsgBox "Folder '" & stringFolderSearch & "' not found.", vbExclamation, "Folder Search"
            End If
        End Sub

    .
    Con questo esempio mi sembra che a questo punto tu abbia la possibilità di personalizzarti il codice come meglio credi secondo le tue esigenze

Devi accedere o registrarti per scrivere nel forum
7 risposte