Te dejo la macro solicitada. ¿Aquí no tendrás que seleccionar los archivos a capturar sino que el mismo programa verificará si se encuentra con algún libro 'xls?' y en ese caso lo volcará en tu libro Resumen, que será el libro donde se encuentra esta macro.
Sub Resumiendo()
'x Elsamatilde
Dim Direc, libR, Archi
Dim Ruta As String, FileNameWOExt As String
Dim ini As Integer, fini As Integer, exten As Integer
'declarar el libro activo
Set libR = ActiveWorkbook
'buscar la carpeta
Set Direc = Application.FileDialog(msoFileDialogFolderPicker)
If Direc.Show = 0 Then Ruta = "": Exit Sub
Application.ScreenUpdating = False
'guarda nombre de directorio elegido
Ruta = Direc.SelectedItems(1)
'se crea la referencia al objeto Filesystem
With CreateObject("scripting.filesystemobject")
With .GetFolder(Ruta)
'se recorre el conjunto de archivos encontrados
Application.DisplayAlerts = False
For Each Archi In .Files
'Obtener el nombre del archivo sin extensión
ext = Mid(Archi, InStr(Archi, ".") + 1)
If InStr(1, ext, "xls") > 0 Then 'controlar que sean xls o xls?
If ini = 0 Then
ini = 2
Else
ini = libR.Sheets(1).Range("A" & Rows.Count).End(xlUp).Row + 1
End If
Workbooks.Open Archi 'pasa a ser el libro activo. se busca fin de rango
fini = Range("A" & Rows.Count).End(xlUp).Row
'copia y pegar como solo valores
Range("A1:R" & fini).Copy
libR.Sheets(1).Range("A" & ini).PasteSpecial Paste:=xlValues
'cierra el libro y pasa a buscar otro
ActiveWorkbook.Close False
End If
Next
End With
End With
'se ordena la hoja Resumen: col R, A, B, C
fini = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
Range("A2:R" & fini).Select
With ActiveWorkbook.Worksheets("Hoja1").Sort.SortFields
.Clear
.Add2 Key:=Range("R3:R" & fini), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.Add2 Key:=Range("A3:A" & fini), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.Add2 Key:=Range("B3:B" & fini), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.Add2 Key:=Range("C3:C" & fini), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
End With
With ActiveWorkbook.Worksheets("Hoja1").Sort
.SetRange Range("A2:R" & fini)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'finaliza
Range("A2").Select
MsgBox "Fin del Proceso de captura.", , "Información"
End Sub
Con respecto al ordenamiento, no lo probé más que en Excel 365, por lo que si te presenta algún error en tu versión comentame. O mejor, con la grabadora de macros seleccioná la columna R e indicale tu criterio. Luego presioná el botón 'Agregar nivel' y realizá lo mismo con el resto de las columnas. Al finalizar con todos los niveles prsioná Aceptar.
Detené la grabadora y en un módulo encontrarás la macro creada. Pasamela o quizás puedas adaptar mi código con la nueva sintaxis.
* Te invito a mirar el video N° 62 (La Grabadora de macros...) de mi canal.