Te dejo el código que abre cada uno de los archivos Excel en la carpeta del archivo elegido
Sub CadaArchivo()
''Creada por FSerranoen 120410
''Para rayearth07 en TodoExpertos.com
''Abre y cierra cada uno de los archivos excel en la carpeta del archivo elegido
'Captura la dirección del archivo elegido
ruta = Application.GetOpenFilename
'Determina la ruta del archivo elegido
ruta = Mid(ruta,1,InStrRev(ruta,"\"))
'Cambia el directorio actual y el nombre del primer archivo
ChDir (ruta): archivo = Dir(ruta)
'Inicio del Ciclo
While archivo <> "" And Application.WorksheetFunction.IsNumber(InStr(1, archivo, ".xl"))
'Abre el archivo actual
Workbooks.Open (archivo)
'En este punto se puede implementar el llamado a otra macro
Call macro_usuario
Call imprimir
'Cierra el archivo actual sin guardar los cambios
ActiveWorkbook.Close savechange = False
'carga el nombre del siguiente archivo para reiniciar el ciclo
archivo = Dir
Wend
'Fin del ciclo
End Sub
Debes reemplazar en la línea Call macro_usuario el texto resaltado por el nombre de la macro que quieres correr en cada archivo, y el código para 'imprimir' (generar un PDF) es este:
Sub imprimir()
ActiveSheet.ExportAsFixedFormatType:=xlTypePDF,Filename:=_
ruta & Mid(ActiveWorkbook.Name,1,InStrRev(ActiveWorkbook.Name,".")-1) & ".pdf",Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
End Sub
Ya con esto, podrías avanzar en tu proceso. Quedo pendiente de tu caso. Saludos
Para poder agilizar el proceso puede deshabilitar la actualización de la pantalla incluyendo esta linea
Application.ScreenUpdating=False
Al principio del código principal; puedes encontrar mayor información sobre como mejorar el desempeño de las macros en este link
No olvides finalizar y puntuar la pregunta