Quindi, dopo aver fatto la nostra macro "principale" (ovvero quella che vogliamo applicare ai files) la chiamiamo MyMacro (si fa scrivendo MyMacro dopo il primo Sub che troverete in alto alla macro) e aggiungiamo altre due nuove macro come queste:
Sub ExecuteApplyMacroToAllFiles()In grassetto ho evidenziato le modifiche da fare, la prima è la cartella da usare (quella che contiene i nostri file) e la seconda è il nome della nostra macro da applicare.
'Change the path to the main folder
Call ApplyMacroToAllFiles("C:\test folder")
End Sub
Sub ApplyMacroToAllFiles(ByVal MyPath As String)
Dim FileSys As Object
Dim objFolder As Object
Dim objSubFolder As Object
Dim objFile As Object
Dim wkbOpen As Workbook
Set FileSys = CreateObject("Scripting.FileSystemObject")
Set objFolder = FileSys.GetFolder(MyPath)
Application.ScreenUpdating = False
For Each objSubFolder In objFolder.SubFolders
For Each objFile In objSubFolder.Files
Set wkbOpen = Workbooks.Open(filename:=objFile)
'Change the name of your macro
Call MyMacro
wkbOpen.Close savechanges:=True
Next
Call ApplyMacroToAllFiles(objSubFolder.Path)
Next
Application.ScreenUpdating = True
End Sub
Una volta fatto questo ci basta avviare la macro chiamata "ExecuteApplyMacroToAllFiles" e vedremo il nostro excel macinare un file dopo l'altro.