O &
simples não funciona para mim no Excel 2007; talvez você quis dizer &[File]
ou talvez &
seja uma abreviação em versões mais recentes?
Com relação aos 5000 arquivos, você provavelmente desejará ter certeza de que eles estão todos no mesmo local e, em seguida, percorrer todos os arquivos .xlsx nesse local. (Você precisa filtrar com base no nome do arquivo também?)
Se você google multiple files excel vba
, achará que o terceiro hit e o seguinte serão relevantes. Alguns elementos-chave do artigo do MSDN:
' Modify this folder path to point to the files you want to use.
FolderPath = "C:\Users\Peter\invoices\"
' Call Dir the first time, pointing it to all Excel files in the folder path.
FileName = Dir(FolderPath & "*.xl*")
' Loop until Dir returns an empty string.
Do While FileName <> ""
' Open a workbook in the folder
Set WorkBk = Workbooks.Open(FolderPath & FileName)
' DO WORK
' DO SAVE CHANGES
WorkBk.Close savechanges:=True
' Use Dir to get the next file name.
FileName = Dir()
Loop
Se você precisar fazer drill down em subdiretórios, considere dividir todo o loop Do While em um Sub que se chame recursivamente (e passando o local da pasta como um parâmetro). Pesquisando vba loop through folder tree
... Ver a resposta recursiva em esta página