22/05/2017

Dica: Criando Diretórios no Windows (Pastas e Subpastas)

Certa vez, precisei criar uma árvore de pastas no Windows. Lembro-me de ter sido uma tarefa bastante exaustiva, pois envolvia 200 pastas, e cada pasta continha cerca de 12 subpastas.

Não contente com o trabalha braçal, resolvi procurar por alguma solução alternativa para o meu problema.

E a resposta foi VBA! Irei explicar agora o desafio, e exemplificá-lo, para facilitar.

Antes de tudo, planilhei o nome das pastas que precisei criar, respeitando a seguinte hierarquia: criando primeiro as pastas principais, e em seguida suas subpastas.



Em seguida, fui até a área de código VBA, através do atalho "Alt + F11".
Inseri um novo módulo e escrevi o seguinte código:



O código em questão:

Sub criardir()
For i = 1 To 27
    MkDir (Range("A" & i))
Next
End Sub

Vamos à explicação do código:

O comando iniciado por For e encerrado por Next é um laço.
Isso significa que será repetido o que está entre o For e o Next por um número predefinido de vezes.

Para utilizar o For... Next, precisaremos de uma variável que receberá um valor a cada repetição.

Nesse caso, foi definido um valor pra variável "i": de 1 a 27. A partir disso, esse comando executa 27 repetições, onde, em cada uma delas o valor do "i" é alterado para o valor da repetição em questão, começando por 1, em seguida por 2, 3 e assim sucessivamente, sempre encerrando no Next e voltando para a primeira linha do For, até que se conclua as 27 repetições. Podemos também aproveitar o valor do "i" para questões que veremos a seguir.

Já o comando MkDir("Caminho do Diretório") é o responsável pela criação do diretório, sendo necessário respeitar a árvore hierárquica dos diretórios, criando primeiro as pastas raízes, como "T:\Diretorios", e em seguida as subpastas, como "T:\Diretorios\Empresa 1", e assim sucessivamente, como "T:\Diretorios\Empresa 1\Mes 1", "T:\Diretorios\Empresa 1\Mes 2".

O que fiz foi definir que, a cada vez que a função For se repita, dentre as 27 vezes definidas, o valor dentro do MkDir() seja o mesmo de uma das células que escrevi os nomes dos diretórios anteriormente na planilha.

O comando que pega o valor das células da planilha é o Range("A1") por exemplo, que pega o valor da célula A1 e trás para o VBA.
Porém, como eu queria o valor das células A1 até a A27, troquei a número da linha da célula de "1" pelo "i". Lembrando que o "i" será alterado a cada repetição do For... Next.

Dessa maneira, toda vez que o For rodar e der um novo valor para o "i", ele representará o número da linha da célula correspondente e me trará o valor contido nela, ficando assim: Range("A" & i). O caractere "&" serve para juntar a coluna "A" com a linha "i". Se o "i" vale 5, resultaria automaticamente em "A5".

Caso tenha que criar 1000 diretórios, basta ajustar o For, de 1 to 27 para For i = 1 to 1000.
E caso os nomes das pastas estejam em outra coluna, troque o A pela letra da coluna correspondente.

Bom, é isso!

Nenhum comentário:

Postar um comentário

Dica: Criando Diretórios no Windows (Pastas e Subpastas)

Certa vez, precisei criar uma árvore de pastas no Windows. Lembro-me de ter sido uma tarefa bastante exaustiva, pois envolvia 200 pastas, e ...