Di seguito vedremo un programma in Excel VBA Quello importa fogli da altri file Excel in un unico file Excel.
Scarica Book4.xlsx, Book5.xlsx e aggiungili a "C:\test\"
Situazione:
Aggiungi le seguenti righe di codice al pulsante di comando:
1. Innanzitutto, dichiariamo due variabili di tipo String, un oggetto Foglio di lavoro e una variabile di tipo Integer.
Dim directory As String, fileName As String, foglio As Worksheet, totale As Integer
2. Disattiva l'aggiornamento dello schermo e la visualizzazione degli avvisi.
Application.ScreenUpdating = False
Application.DisplayAlerts = False
3. Inizializzare la directory delle variabili. Usiamo la funzione Dir per trovare il primo *.xl?? file memorizzato in questa directory.
cartella = "c:\prova\"
nomefile = Dir(directory & "*.xl??")
Nota: la funzione Dir supporta l'uso di caratteri jolly multipli (*) e singoli caratteri (?) per cercare tutti i diversi tipi di file Excel.
4. La variabile fileName ora contiene il nome del primo file Excel trovato nella directory. Aggiungi un ciclo Do While.
Do While nomefile ""
Ciclo continuo
Aggiungi le seguenti righe di codice (a 5, 6, 7 e 8) al ciclo.
5. Non esiste un modo semplice per copiare fogli di lavoro da file Excel chiusi. Pertanto apriamo il file Excel.
Cartelle di lavoro.Apri (directory e nomefile)
6. Importare i fogli dal file Excel in import-sheet.xlsm.
Per ogni foglio nelle cartelle di lavoro (nomefile). Fogli di lavoro
total = Workbooks("import-sheets.xlsm").Worksheets.count
Cartelle di lavoro(nomefile).Fogli di lavoro(foglio.Nome).Copia _
after:=Workbooks("import-sheets.xlsm").Fogli di lavoro(totale)
Foglio successivo
Spiegazione: la variabile total tiene traccia del numero totale di fogli di lavoro di import-sheet.xlsm. Usiamo il metodo Copy dell'oggetto Worksheet per copiare ogni foglio di lavoro e incollarlo dopo l'ultimo foglio di lavoro di import-sheets.xlsm.
7. Chiudere il file Excel.
Cartelle di lavoro (nomefile).Chiudi
8. La funzione Dir è una funzione speciale. Per ottenere gli altri file Excel, puoi utilizzare nuovamente la funzione Dir senza argomenti.
nomefile = Dir()
Nota: quando non corrispondono più nomi di file, la funzione Dir restituisce una stringa di lunghezza zero (""). Di conseguenza, Excel VBA lascerà il ciclo Do While.
9. Riattivare l'aggiornamento dello schermo e la visualizzazione degli avvisi (al di fuori del ciclo).
Application.ScreenUpdating = True
Application.DisplayAlerts = True
10. Testare il programma.
Risultato: