Sviluppare funzionalita su Microsoft Office con VBA Ricerca di una cartella dal nome specifico tramite macro

Login Registrati
Stai vedendo 6 articoli - dal 1 a 6 (di 6 totali)
  • Autore
    Articoli
  • #6886 Score: 0 | Risposta

    Espresso90
    Partecipante

      Buongiorno, nel foglio ECA Workload devo andare a prendere i valori della colonna B a partire da B6 fino all' ultima riga.

      Devo cercare delle cartelle con lo stesso nome del valore che vi è all'interno della cella. La cartella può avere come nome non soltanto quello della cella ma anche altro in aggiunta. 

      Esempio: Se prendiamo in considerazione la riga B6 il valore al suo interno è: E1.000233. Io devo prendere questo valore e cercarlo in una directory dove vi solo molte cartelle. Nella dir vi è una cartella che inizia con "E1.000233" ma magari può avere anche altro come nome della cartella ad esempio il nome della cartella può essere: "E1.000233_XXXX".

      Come faccio a creare una macro che mi faccia questa ricerca in automatico?

      Allegati:
      You must be logged in to view attached files.
      #6937 Score: 0 | Risposta

      vecchio frac
      Senior Moderator
        272 pts

        La funzione più banale che mi viene in mente è Dir(), che restituisce il primo risultato utile in una cartella.

        Puoi usarla anche con l'attributo vbDirectory e farti restituire la prima cartella che inizia con quel nome.

        Io però preferirei una cosa più robusta con un oggetto file system object e il suo modello ad oggetti gerarchico di file e cartelle.

        Per creare una macro procedi anzitutto aprendo l'editor e impostando una sub... a che livello sei con queste cose?

        #6955 Score: 0 | Risposta

        Espresso90
        Partecipante

          La sub è già stata impostata, devo solo capire come fare il codice e quale funzione usare per rendere il tutto più efficiente e smart possibile. 

          Secondo te potrebbe funzionare utilizzando una funzione dir()?

          #6957 Score: 0 | Risposta

          vecchio frac
          Senior Moderator
            272 pts

            Espresso90 wrote:La sub è già stata impostata, devo solo capire come fare il codice e quale funzione usare per rendere il tutto più efficiente e smart possibile. 

            Ma certamente!

            Analizza il seguente breve codice:

            Option Explicit
            
            Sub search_dir(s As String)
            Dim mypath As String
            Dim fd As String
                
                mypath = "J:\"
                fd = Dir(mypath & s & "*", vbDirectory)
                Do Until fd = ""
                  If (GetAttr(mypath & fd) And vbDirectory) = vbDirectory Then
                    Debug.Print mypath & fd
                  End If
                  fd = Dir()
                Loop
            End Sub

            Al posto di J:\ metti la cartella in cui vuoi cercare qualcosa.

            Richiamala in finestra immediata ad esempio con search_dir "cartellaesistente" e vedi che risultati dà.

            #6970 Score: 0 | Risposta

            Espresso90
            Partecipante

              Funziona perfettamente! 

              Adesso dovrei anche riuscire ad utilizzare il tuo codice per fare la ricerca di un file xlsx anche all' interno delle sub cartelle contenute nel path che gli assegno. Ti ringrazio dell' aiuto.

              #6972 Score: 0 | Risposta

              vecchio frac
              Senior Moderator
                272 pts

                Allora devi ragionare sull'attributo vbDirectory... vedi quali sono gli altri attributi che Dir() accetta (a memoria non me lo ricordo ma non è difficile)

              Login Registrati
              Stai vedendo 6 articoli - dal 1 a 6 (di 6 totali)
              Rispondi a: Ricerca di una cartella dal nome specifico tramite macro
              Gli allegati sono permessi solo ad utenti REGISTRATI
              Le tue informazioni: