Cercare File(s) sull'Hard-Disk. (01/06/03) Un esercizio utile a chi voglia ricercare se esiste un file, oppure di avere l'elenco di tutti i file con una determinata estensione presenti in una cartella. Sfrutteremo il metodo Execute applicato all'oggetto FileSearch. Con Execute possiamo usare due costanti che ci forniranno l'elenco dei file trovati ordinati per nome e in ordine crescente (da A a Z). ( Execute inizia la ricerca per il file o i file specificati. Restituisce un oggetto Long; zero (0) se non viene trovato alcun file o un numero positivo se vengono trovati uno o più file). Le istruzioni si basano sul settaggio di una variabile assegnata ad Application.FileSearch, che saranno sempre le stesse, a cui seguiranno istruzioni su dove cercare il file e il nome o l'estensione da trovare; queste ultime le renderemo variabili per poter eseguire tipi diversi di ricerca.. Ma partiamo col primo esempio, la ricerca di un file in una cartella. Di questo esempio, con i parametri di ricerca fissi e impostati nelle istruzioni, non vedo una pratica utilità, serve solo a avvicinarsi ai concetti di queste ricerche; in verde i commenti:
Nel secondo esempio invece esaminiamo le procedure per la ricerca di file impostando non più i parametri nel codice, ma usando tre celle del foglio di lavoro da usare come contenitori (vettori) che assegneremo a tre variabili, e saranno le tre variabili a prendere il posto del
In questo modo potremo cercare in qualunque cartella, un file specifico o, impostando un asterisco ( carattere jolly * al posto del nome file, così verranno cercati TUTTI i file), variare il tipo di estensione dei file, per ottenere di volta in volta tutti i tipi di documento Word (doc), o di file di Excel (xls), o di immagini (bmp, jpg, ecc.) ecc. ecc. Nell'esempio proposto uso le celle A1, B1 e C1 (ma potranno essere quelle che vorrete) per scrivere rispettivamente: il nome cartella, il nome del file, l'estensione da cercare. Esempio delle tre celle con, rispettvamente: nome della cartella - asterisco - estensione :
Altro accorgimento: inserendo nelle istruzioni la proprietà SearchSubFolders impostata a True , sarà possibile eseguire la ricerca in tutte le cartelle del nostro Hard-Disk, SENZA bisogno di indicare il nome di una cartella, in questo modo verranno trovati TUTTI i file con l'estensione richiesta presenti in tutte le cartelle, Esempio in cui la cella A1 viene lasciata vuota:
Una cosa da considerare è che non sapremo il numero di quanti files saranno presenti in una determinata cartella, e visto che una volta lanciata la routine, il metodo Execute restituisce un SOLO messaggio col totale dei files trovati e a seguire, MA SENZA INTERRUZIONE, un messaggio col nome ed il percorso dei ogni file trovato, se vogliamo interrompere il ciclo anzitempo, è doveroso prevedere una domanda condizionale se vorremo uscire (dal ciclo) oppure no. Vediamo le istruzioni, in verde i commenti:
Alcuni accorgimenti: la routine sopra l'abbiamo impostata con, tra i criteri di ricerca, la possibilità di scegliere noi l'estensione da cercare. Bene, esiste una variante usando la proprietà FileType con la costante msoFileTypeOfficeFiles , di ottenere tutti i file caratterizzati dalle seguenti estensioni: *.doc, *.xls, *.ppt, *.pps, *.obd, *.mdb, *.mpd, *.dot, *.xlt, *.pot, *.obt, *.htm o *.html. - In questo caso non useremo nelle istruzioni la proprietà FileName, sostituendo la riga dell'istruzione .Filename = "" & nome & "." & este & "" con questa: .FileType = msoFileTypeOfficeFiles Un altro accorgimento, nel caso si voglia cercare i file SOLO nella cartella di sistema (quella che di default è impostata dal Sistema Operativo) che per le versioni di Windows è C:\Documenti e per Windows XP è C:\Documents and Settings\Nome Utente\Documenti, sarà sufficiente sostituire l'istruzione : .LookIn = "C:\" & cartella & "" con questa : .LookIn = CurDir("C")
Buon lavoro. |