Gerar Árvore de Arquivos e Diretórios no Excel

Você pode usar o Excel para varrer um caminho local ou de rede e mostrar os arquivos e/ou diretórios (que chamarei neste artigo de itens) numa tabela, criando uma árvore de itens. Na pasta de trabalho que preparei, você pode configurar como quer exibir os resultados:

O resultado da execução do programa pode ser visto abaixo:

Muitas vezes, mesmo com permissão de administrador, não é possível varrer todos os itens de um diretório. Isso pode ocorrer em função de atributos de um item ou até mesmo na incapacidade do VBA em ter as mesmas permissões que um usuário tem. Para esses casos e de outros erros, há uma planilha chamada Erros na pasta de trabalho que lista os casos em que não foi possível ler informações de um item.

Se for de seu interesse, há como tornar a rotina mais rápida: elimine todas as referências a intervalos nomeados como [ListFolders], substituindo por variáveis de nível de módulo, ou então simplesmente elimine do código testes condicionais e tratamentos de erros que você julgar desnecessários.

Existem dois métodos de busca disponíveis: Dir e FileSystemObject. Ambos tem vantagens e desvantagens. Fiz um teste varrendo todos os itens do meu computador e notei resultados curiosos:

  • FileSystemObject: demorou 190s, encontrou 340.000 itens e obteve erro no acesso a 375 itens.
  • Dir: demorou 62s, encontrou 270.000 itens e obteve erro no acesso a 55 itens.

O método Dir é mais rápido que o FileSystemObject, no entanto, sua implementação com recursão é um pouco complicada, como pode ser visto no código. Além disso, Dir encontra menos arquivos que FileSystemObject. Essa grande diferença se dá pelo fato de eu não ter utilizado argumentos vbReadOnly, vbHidden e vbSystem na função Dir. Não sei se é possível afirmar que mesmo usando esses argumentos, eu alcançaria a mesma quantidade de itens varridos pelo FileSystemObject. Decidi deixar esses argumentos de fora porque a cada novo teste aparecia erros diferentes que precisaria eu mudar bastante a rotina.

Num ambiente de rede bastante lento, eu certamente utilizo Dir. No entanto, se eu quiser fazer uma análise minuciosa que inclui arquivos de sistema e ocultos, escolheria FileSystemObject.

Para fazer download do arquivo de exemplo deste artigo, clique aqui.

Sobre Felipe Gualberto

Microsoft Most Valuable Professional (MVP) de Excel.
Esta entrada foi publicada em Ferramentas e marcada com a tag , , , , , . Adicione o link permanente aos seus favoritos.