Come scorrere i file in una directory e copiare i dati in un foglio principale in Excel?
Supponendo che ci siano più cartelle di lavoro di Excel in una cartella e desideri scorrere tutti questi file Excel e copiare i dati dall'intervallo specificato di fogli di lavoro con lo stesso nome in un foglio di lavoro principale in Excel, cosa puoi fare? Questo articolo introduce un metodo per ottenerlo nei dettagli.
Scorri i file in una directory e copia i dati in un foglio principale con codice VBA
Scorri i file in una directory e copia i dati in un foglio principale con codice VBA
Se si desidera copiare i dati specificati nell'intervallo A1: D4 da tutto il foglio1 delle cartelle di lavoro in una determinata cartella a un foglio principale, eseguire le operazioni seguenti.
1. Nella cartella di lavoro creerai un foglio di lavoro principale, premi il tasto altro + F11 chiavi per aprire il Microsoft Visual Basic, Applications Edition finestra.
2. Nel Microsoft Visual Basic, Applications Edition finestra, fare clic inserire > Moduli. Quindi copia sotto il codice VBA nella finestra del codice.
Codice VBA: scorre i file in una cartella e copia i dati in un foglio principale
Sub Merge2MultiSheets()
Dim xRg As Range
Dim xSelItem As Variant
Dim xFileDlg As FileDialog
Dim xFileName, xSheetName, xRgStr As String
Dim xBook, xWorkBook As Workbook
Dim xSheet As Worksheet
On Error Resume Next
Application.DisplayAlerts = False
Application.EnableEvents = False
Application.ScreenUpdating = False
xSheetName = "Sheet1"
xRgStr = "A1:D4"
Set xFileDlg = Application.FileDialog(msoFileDialogFolderPicker)
With xFileDlg
If .Show = -1 Then
xSelItem = .SelectedItems.Item(1)
Set xWorkBook = ThisWorkbook
Set xSheet = xWorkBook.Sheets("New Sheet")
If xSheet Is Nothing Then
xWorkBook.Sheets.Add(after:=xWorkBook.Worksheets(xWorkBook.Worksheets.Count)).Name = "New Sheet"
Set xSheet = xWorkBook.Sheets("New Sheet")
End If
xFileName = Dir(xSelItem & "\*.xlsx", vbNormal)
If xFileName = "" Then Exit Sub
Do Until xFileName = ""
Set xBook = Workbooks.Open(xSelItem & "\" & xFileName)
Set xRg = xBook.Worksheets(xSheetName).Range(xRgStr)
xRg.Copy xSheet.Range("A65536").End(xlUp).Offset(1, 0)
xFileName = Dir()
xBook.Close
Loop
End If
End With
Application.DisplayAlerts = True
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Note::
3. premi il F5 chiave per eseguire il codice.
4. In apertura Scopri la nostra gamma di prodotti finestra, selezionare la cartella contenente i file che verranno riprodotti in loop, quindi fare clic su OK pulsante. Vedi screenshot:
Quindi un foglio di lavoro principale denominato "Nuovo foglio" viene creato alla fine della cartella di lavoro corrente. E i dati nell'intervallo A1: D4 di tutti i fogli1 nella cartella selezionata sono elencati all'interno del foglio di lavoro.
Articoli correlati:
I migliori strumenti per la produttività in ufficio
Potenzia le tue competenze in Excel con Kutools for Excele sperimenta l'efficienza come mai prima d'ora. Kutools for Excel Offre oltre 300 funzionalità avanzate per aumentare la produttività e risparmiare tempo. Fai clic qui per ottenere la funzionalità di cui hai più bisogno...
Office Tab Porta l'interfaccia a schede in Office e rende il tuo lavoro molto più semplice
- Abilita la modifica e la lettura a schede in Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
- Apri e crea più documenti in nuove schede della stessa finestra, piuttosto che in nuove finestre.
- Aumenta la produttività del 50% e riduce ogni giorno centinaia di clic del mouse!














