Isso cria uma estrutura de pastas com o VBA. Curto e lindo.
Sub CreateFolderStructure()
Dim objRow as Range, objCell as Range, strFolders as String
For Each objRow In ActiveSheet.UsedRange.Rows
strFolders = "C:\myRootFolder"
For Each objCell In objRow.Cells
strFolders = strFolders & "\" & objCell
Next
Shell ("cmd /c md " & Chr(34) & strFolders & Chr(34))
Next
End Sub
Sem tratamento de erros!
O que faz
- Fazer um loop em todas as linhas usadas da sua planilha ativa do Excel
- Defina a pasta raiz na qual nossas novas pastas devem ser criadas. Deve ser feito em todos os ciclos
- Faz um loop por todas as células usadas na linha atual
- Concatene a pasta raiz com uma barra invertida e a nova subpasta.
Faça isso para cada subpasta nessa linha até obter algo como"C:\myRootFolder\TOP FOLDER 1\SUB FOLDER 1.1\SUB FOLDER 1.2\SUB FOLDER 1.3"
- Agora vem a mágica. Fazemos não usar a função
mkdir
do VBA.
Em vez disso, usamosShell(cmd /c md)
que pode criar várias pastas com um único comando. Também não produz nenhum erro se uma pasta já existir. Um comando tão bonito
Algumas notas
- Evite esses caracteres nos nomes das pastas:
© ® " - & ' ^ ( ) @
- As células vazias do Excel não são problema. O comando MD pode manipular strings como
C:\root\subfolder
com duas barras invertidas consecutivas - Os espaços nos nomes das pastas não são um problema, pois envolvemos a estrutura completa com duas aspas (
chr(34)
)