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:

Files in a Directory Example

Aggiungere le seguenti righe di codice per il pulsante di comando:

  1. 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
  1. Per evitare lo sfarfallio dello schermo, disattivare l’aggiornamento dello schermo.

Application.ScreenUpdating = False
  1. 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.

  1. 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.

  1. 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
  1. 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)
  1. 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
  1. Chiudere il file di Excel.

Workbooks(fileName).Close
  1. 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.

  1. Accendere schermo nuovamente ad aggiornare (all’esterno del ciclo).

Application.ScreenUpdating = True
  1. Test del programma.

Risultato:

Files in a Directory in Excel VBA