› Sviluppare funzionalita su Microsoft Office con VBA › Ricerca di una cartella dal nome specifico tramite macro
-
AutoreArticoli
-
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.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?
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()?
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 SubAl 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à.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.
Allora devi ragionare sull'attributo vbDirectory... vedi quali sono gli altri attributi che Dir() accetta (a memoria non me lo ricordo ma non è difficile)
-
AutoreArticoli
