Ir ao conteúdo

Excel Criar sub-diretorios à partir de uma lista de diretorios


Ir à solução Resolvido por daluque,

Posts recomendados

Postado

Boas.

Tenho uma planilha do excel com uma lista de diretórios.

Ex: C:\DiretorioDeCasos\Caso1...... até...... Caso1100

estou precisando criar dentro de cada pasta de "Caso" seis sub-pastas.(subcaso1, subcaso2, subcaso3, subcaso4, subcaso5, subcaso6)

Vi alguma coisa criando pastas dentro de uma pasta específica, mas á partir de uma lista de pastas não estou conseguindo implantar.

 

 

obrigado por ajudas.

 

 

Postado

@daluque Se o diretório for outro é só editar o argumento de GetFolder.

Sub CriaSubPastas()
    Dim Fso     As Object
    Dim Pasta   As Object
    
    Set Fso = CreateObject("Scripting.FileSystemObject")
        
    For Each Pasta In Fso.GetFolder("C:\DiretorioDeCasos\").SubFolders
        If Left(Pasta.Name, Len("Caso1")) = "Caso1" Then
            Dim Novo    As String
            Dim I       As Integer
            For I = 1 To 6
                Novo = Pasta.Path & "\subcaso" & I
                If Not Fso.FolderExists(Novo) Then
                    Call Fso.CreateFolder(Novo)
                End If
            Next I
        End If
    Next Pasta
End Sub

 

Obs: A macro vai criar os subdiretórios em todas as pastas que começam com Caso1

Postado

@daluque Assim teria que fazer um loop na lista de diretórios da planilha em vez da forma que fiz com For Each. Mas se esse é só um exemplo e a quantidade vai de 1 até 1100 mesmo é melhor fazer um For de 1 até 1100.

Postado

@daluque Pegando o caminho da planilha pode ser assim,

 

Sub CriaSubPastas()
    Dim Pasta   As Range
    For Each Pasta In [A6:A29]
        If Pasta <> "" Then
            If Dir(Pasta, vbDirectory) <> "" Then
                Dim Novo    As String
                Dim I       As Integer
                For I = 1 To 6
                    Novo = Pasta & "\NovaPasta" & I
                    If Dir(Novo, vbDirectory) = "" Then
                        Call MkDir(Novo)
                    End If
                Next I
            End If
        End If
    Next Pasta
End Sub

 

  • Curtir 2
Postado

Ok. Midori, acredito que vá funcionar.

estou sem condições de testar no momento, amanhã farei o teste e dou um retorno.

 

muitíssimo obrigado

  • Curtir 1
Postado

Vou dar uma forma alternativa de como fazer isso usando um arquivo *.bat:

 

 

Aqui está o código:

 

@echo off

if exist "%~1" (if /i not "%~x1"==".csv" exit) else (exit)

set Subpasta=NovaPasta
set Quantidade=6

for /f "usebackq delims=;" %%a in ("%~1") do (
for /L %%b in (1,1,%Quantidade%) do If not exist "%%~a\%Subpasta%%%b" md "%%~a\%Subpasta%%%b"
                                             )

 

P.S: Um detalhe que notei é que algumas pastas em seu exemplo terminam com espaço ex: "AT-0005- ", no caso você não pode criar pastas que terminam com espaço parece que isso é contra a geração de nomes validos do Windows ou algo assim. Uma forma rápida de resolver isso é ir em Localizar & substituir e substituir "- " por "-"

  • Curtir 1
Postado

Boas ricardo_br.

muito bom mesmo.

Só um detalhe: as subpastas não devem ser com o mesmo nome e numeradas, elas tem nomes específicos sobre ao que elas se referem. desculpe por fazer entender que as mesmas teriam nomes sequenciais.

 

os nomes devem ser por exemplo: Social/educação/juridico/documentos/psicologia/geral

 

mais uma vez desculpe pela confusão. 

 

mas muito obrigado pela colaboração.

Postado

@daluque Basta modificar o código levemente:

 

@echo off

setLocal EnableDelayedExpansion
chcp 1252 >nul
if exist "%~1" (if /i not "%~x1"==".csv" exit) else (exit)

set Quantidade=6
set Subpasta[1]=Social
set Subpasta[2]=educação
set Subpasta[3]=juridico
set Subpasta[4]=documentos
set Subpasta[5]=psicologia
set Subpasta[6]=geral


for /f "usebackq delims=;" %%a in ("%~1") do (
for /L %%b in (1,1,%Quantidade%) do if /i not exist "%%a\!Subpasta[%%b]!" md "%%a\!Subpasta[%%b]!"
                                             )
exit

 

Se quiser usar acentos na criação das pastas como em "educação", quando for salvar o arquivo *.bat na parte onde tem a opção "Codificação" coloque ANSI...

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!