Nel caso che i risultati tramite il tool suggerito e sviluppato da kingklang non fossero idonei...
In quest'altra discussione veniva presentata la Sub RIEP, poi evoluta in Sub RIEP2:
viewtopic.php?f=26&t=106455L'obiettivo era creare un unico "riepilogo" leggendo il "primo foglio" di una serie di file Excel memorizzati tutti in una unica directory.
Poiche' la tua esigenza e' di riepilogare "tutti i fogli di tutti i file" dobbiamo fare una piccola modifica in modo da ciclare attraverso tutti i fogli dei file man mano che vengono esaminati.
Il codice finale dovrebbe essere
- Codice: Seleziona tutto
Sub RIEP3()
Dim myDir As String, myCFile As String, myLast As Long
Dim newWB As Workbook, myUsed As Long
'
'Crea il Riepilogo su Foglio1 di un NUOVO WORKBOOK
'
myDir = "D:\PROVA\" '<<< La dir dei file da consolidare (con \ finale)
'
Application.EnableEvents = False
Debug.Print vbCrLf & vbCrLf & ">>>>>>>>>> " 'Per prova
Set newWB = Workbooks.Add 'rea un nuovo Workbook
myCFile = Dir(myDir & "*.xls*")
Do
If myCFile = "" Then Exit Do
'On Error Resume Next
myLast = getLast
Debug.Print myLast, myCFile ' per prova
newWB.Sheets(1).Cells(myLast + 1, 1) = ">>>> " & myCFile: myLast = myLast + 1 '??? Log WorkbookName
Workbooks.Open (myDir & myCFile)
For I = 1 To Sheets.Count
Sheets(I).Select
If Sheets(I).Type = xlWorksheet Then
myUsed = getLast
If myUsed > 0 Then
newWB.Sheets(1).Cells(myLast + 1, 1) = "##### " & ActiveSheet.Name: myLast = myLast + 1 '??? Log WorksheetName
ActiveSheet.Range("A1:AZ" & myUsed).Copy newWB.Sheets(1).Cells(myLast + 1, 1)
myLast = myLast + myUsed
End If
End If
Next I
ActiveWorkbook.Close False
myCFile = Dir
Loop
Application.EnableEvents = True
MsgBox ("Riepilogo completato su nuovo File...")
End Sub
Function getLast() As Long
Dim LastR As Long
On Error Resume Next
LastR = Cells.Find(What:="*", After:=[A1], _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
On Error GoTo 0
getLast = LastR
End Function
Va messo tutto in un Modulo standard del vba di un file di servizio (anche Personal.xlsm); la riga marcata <<< va personalizzata come da commento.
Poi all'occorrenza va lanciata la Sub RIEP3
La macro creera' UN NUOVO FILE, e al suo interno incollera' il contenuto di tutti i fogli di tutti i file trovati nella directory dichiarata.
La copia e' limitata alle prime 50 colonne dei fogli; se pensi che sia un problema si puo' gestire meglio la larghezza di copia.
Vengono inseriti nel foglio di riepilogo, in colonna A, il nome del file preceduto da >>>> e il nome dei singoli fogli preceduti da <<<<. Se questa pretazione non e' gradita allora vanno rimosse in toto le due linee marcate ??? Log WorkbookName /Log WorksheetName
Fai sapere...