3
respostas

Abertura de pastas

Bom dia, Estou tentando montar uma rotina para abrir algumas pastas e dentro dessas pastas abrir arquivos. Ex: Pastas numeradas de 1 a 10, e dentro de cada pasta tenho 10 arquivos (Excel), eu quero abrir a pasta 1 e abrir os 10 arquivos, depois a pasta 2,3,4.... O código que uso atualmente eu nomeei o caminho todo para a pasta:

Caminho_Pasta = Diretorio & ":\" & caminho & "\01 - Adm-Fin-Rh\CLT\" & Mes

        Set pasta = CreateObject("Scripting.FileSystemObject").GetFolder(Caminho_Pasta)
        For Each arquivo In pasta.Files
                    Workbooks.Open (Caminho_Pasta & "\" & arquivo.Name)
        Next

Mas Eu queria algo mais automático, pois se um belo dia ao invez de 10 pastas eu tiver 11, eu teria que alterar o código. Pensei em usar alguma estrutura de For ou Do, mas não funciona em visto que a pasta 01 é ADM, a 02 é outro setor e assim vai. Teria alguma forma de criar um laço para isso?

3 respostas

Olá Gustavo, tudo bem? Espero que sim!

Você pode utilizar um loop externo para navegar pelas subpastas usando a propriedade SubFolders que retorna as subpastas de uma pasta. Portanto, basta você iniciar o Caminho_Pasta na pasta geral e utilizar um comando For deste tipo:

Set pasta_geral = CreateObject("Scripting.FileSystemObject").GetFolder(Caminho_Pasta)
          For Each arquivo In folder.subfolders

Dessa forma o VBA irá navegar por todos os arquivos das subpastas.

A documentação da propriedade SubFolders pode ser encontrada no nesse link do site da Microsoft.

Espero que tenha tirado sua dúvida.

Estou à disposição. Bons estudos!

Essa resposta atendeu as espectativas da minha pergunta, mas não serviu para miha situação expecifica, Pq depois dentro das pastas de 1 a 10 como mostrei anteriormente eu tenho separação por mês, ai se eu usar o For Each arquivo In folder.subfolders nelas vai dar problema, pq eu quero abrir todas as especialidades, e dentro de cada especialidade abrir um mês especifico. Ai esse looping não dá jeito. O jeito vai ser deixar na programação mesmo, e qualquer necessidade é eu fazer edição nela.

Olá Gustavo,

Você não pode usar um If dentro do For para checar se o arquivo é do mês que deseja e aplicar o código somente quando o mês for atendido?