File in una directory in Excel VBA
Di seguito vedremo un programma in Excel VBA che scorre tutti le cartelle di lavoro chiusi e fogli di lavoro in una directory, e visualizza tutti i nomi.
Scarica Book1.xlsx, Book2.xlsx, Book3.xlsx, Book4.xlsx e Book5.xlsx e aggiungerli a “C: \ test \”
Situazione:
Aggiungere le seguenti righe di codice per il pulsante di comando:
-
In primo luogo, si dichiara due variabili di tipo stringa, un oggetto di prospetto e due variabili di tipo intero.
Dim directory As String, fileName As String, sheet As Worksheet, i As Integer, j As Integer
-
Per evitare lo sfarfallio dello schermo, disattivare l’aggiornamento dello schermo.
Application.ScreenUpdating = False
-
Inizializzare la directory variabile. Usiamo la funzione Dir per trovare la prima .xl ?? di file memorizzati in questa directory.
directory = "c:\test\" fileName = Dir(directory & ".xl??")
Nota: (?) La funzione Dir supporta l’uso di carattere multipla (*) e singolo carattere jolly per la ricerca di tutti i diversi tipi di file Excel.
-
La variabile nomeFile ora detiene il nome del primo file di Excel si trova nella directory. Aggiungi un ciclo Do While.
Do While fileName <> "" Loop
Aggiungere le seguenti linee di codice (a 5, 6, 7, 8 e 9) alla rete.
-
inizializzare le variabili di tipo Integer e aggiungere il nome del file di Excel per la prima colonna della riga i.
i = i + 1 j = 2 Cells(i, 1) = fileName
-
Non v’è alcun modo semplice per estrarre i dati (o nomi dei fogli) da file di Excel chiusi. Quindi, apriamo il file di Excel.
Workbooks.Open (directory & fileName)
-
Aggiungere tutti i nomi dei fogli del file di Excel per le altre colonne della riga i.
For Each sheet In Workbooks(fileName).Worksheets Workbooks("files-in-a-directory.xlsm").Worksheets(1).Cells(i, j).Value = sheet.Name j = j + 1 Next sheet
-
Chiudere il file di Excel.
Workbooks(fileName).Close
-
La funzione Dir è una funzione speciale. Per ottenere gli altri file di Excel, è possibile utilizzare di nuovo la funzione Dir senza argomenti.
fileName = Dir()
Nota: quando non ci sono i nomi dei file più corrispondono, la funzione Dir restituisce una stringa di lunghezza zero ( “”). Di conseguenza, Excel VBA lascerà il ciclo Do While.
-
Accendere schermo nuovamente ad aggiornare (all’esterno del ciclo).
Application.ScreenUpdating = True
-
Test del programma.
Risultato: