Ciao Annina79 e benvenuta nel Forum
Ti posto una macro già collaudata più volte
(bisogna solo adattarla alle tua struttura dei dati che, non conoscendoli non posso intervenire direttamente)
- Codice: Seleziona tutto
Sub ElencoFileXls()
Application.ScreenUpdating = False
Application.Calculation = xlManual
perc = ThisWorkbook.Path
If Dir(perc & "\ArchivioXls", vbDirectory) = "" Then
MkDir (perc & "\ArchivioXls")
End If
WB1 = ThisWorkbook.Name
Ws1 = "Foglio1" '<<<<<<<<<<< nome del foglio che importerà i dati dai file
Worksheets(Ws1).Select
Range("A1").Select
ElencoFile Direct:=perc, Estens:="*.xls*", Inicell:=ActiveCell
Columns("A:AZ").EntireColumn.AutoFit '<<<< aggiusta la larghezza delle colonna da A a AZ in base al contenuto delle celle
Range("A1").Select
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
Sub ElencoFile(Direct As String, Estens As String, Inicell As Range)
Dim i As Integer, f As String
ChDir Direct
f = Dir(Estens)
If f = "" Then Exit Sub
While f <> ""
If f <> ThisWorkbook.Name Then
Application.Workbooks.Open perc & "\" & f
URF = Workbooks(f).Worksheets("Foglio1").Range("A" & Rows.Count).End(xlUp).Row '<<<< Al posto di "Foglio1" dovrai mettere "Dati"
URR = Workbooks(WB1).Worksheets(Ws1).Range("A" & Rows.Count).End(xlUp).Row '<<<< calcolo dell'ultima riga con dati in colonna A
Workbooks(f).ActiveSheet.Rows("1:" & URF).Copy Destination:=Workbooks(WB1).Worksheets(Ws1).Range("A" & URR + 1) '<<< range da adattare (così come è fatto copia tutte le righe piene
Workbooks(f).Close savechanges:=False
FileCopy perc & "\" & f, perc & "\ArchivioXls\" & f '<<<<< copia il file processato nella sottocartella ArchivioXls
Kill perc & "\" & f '<<<<<< elimina il file dalla cartella origine per evitare di importare di nuovo gli stessi dati
End If
f = Dir
Wend
End Sub
Lanciando la macro "ElencoFileXls"
1) verrà aperto un file di Excel (file dati-origine) contenuto nella stessa cartella del file con macro (file Riepilogo)
2) importerà i dati indicati nella riga-codice con <<< range dati (da adattare) attualmente è un insieme di righe
3) chiuderà il file dati origine senza salvarlo
4) sposta il file-dati origine processato in una sottocartella chiamata ArchivioXls (cartella che la stessa macro crea se non esiste)
5) se esistono altri file xls nella cartella origine, ricomincia dal punto 1)
Per il foglio Riepilogo si dovrà fare un'apposita macro che trascrivi quanto importato precedentemente nel "foglio1"
ma per fare questo bisogna sapere dove sono posti i dati nel Foglio1 e sapere dove devono essere inseriti nel foglio "Riepilogo"
Ciao