Importa fogli utilizzando Excel VBA
Di seguito vedremo un programma in Excel VBA che importa fogli da altri file di Excel in un unico file di Excel.
Scarica Book4.xlsx, 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 foglio di lavoro ed una variabile di tipo intero.
Dim directory As String, fileName As String, sheet As Worksheet, total As Integer
-
Spegnere l’aggiornamento dello schermo e gli avvisi visualizzazione.
Application.ScreenUpdating = False Application.DisplayAlerts = 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 e 8) alla rete.
-
Non v’è alcun modo semplice per copiare i fogli di lavoro di Excel da file chiusi.
Quindi apriamo il file di Excel.
Workbooks.Open (directory & fileName)
-
Importare i fogli dal file di Excel in import-sheet.xlsm.
For Each sheet In Workbooks(fileName).Worksheets total = Workbooks("import-sheets.xlsm").Worksheets.count Workbooks(fileName).Worksheets(sheet.Name).Copy _ after:=Workbooks("import-sheets.xlsm").Worksheets(total) Next sheet
Spiegazione: il totale variabile contiene traccia del numero totale di fogli di lavoro di import-sheet.xlsm. Usiamo il metodo copia dell’oggetto foglio di lavoro per copiare ogni foglio di lavoro e incollarlo dopo l’ultimo foglio di lavoro di import-sheets.xlsm.
-
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 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 l’aggiornamento dello schermo e la visualizzazione di avvisi di nuovo (al di fuori del ciclo).
Application.ScreenUpdating = True Application.DisplayAlerts = True
-
Test del programma.
Risultato: