Ir ao conteúdo

Posts recomendados

Postado

Olá! Prezado, preciso desenvolver uma macro que descompacte arquivos em lote, entretanto que não descompacte criando uma nova pasta, que seja descompactado todos os arquivos das pastas raiz.

 

 

Como por exemplo, as duas pastas compactadas dentro do Exemplo 1 sejam descompactadas somente o arquivo dentro da pasta Exemplo 1, o mesmo para o exemplo 2.

Teste\Arquivos 1\Exemplo 1

 

Também na pasta abaixo do exemplo, onde os arquivos das pastas compactadas sejam extraidas dentro de arquivos 2 e somente os arquivos.

Teste\Arquivos 2

Teste.rar

Postado

@Cfernandes A macro pode fazer a busca nos subdiretórios para procurar o arquivo compactado e para descompactar pode usar algum programa que aceite comandos via linha de comando/Shell. Aqui tenho o 7-Zip e fiz a macro com ele, caso tenha outro tente alterar a atribuição Programa e verifique se tem algum argumento na linha de comando. Um dos argumentos que passei foi -y para substituir arquivos existes. Salve a planilha no diretório raiz. Como é um teste os arquivos não serão descompactados nessa raiz.

 

Sub ProcuraArquivosCompactados()
    Dim Fso As Object
    Set Fso = CreateObject("Scripting.FileSystemObject")
    Call ListaDiretorios(Fso, ThisWorkbook.Path)
End Sub

Sub ListaDiretorios(Fso As Object, ByVal Pasta As String)
    Dim Arquivo As Object
    Dim SubDir  As Object
  
    For Each Arquivo In Fso.GetFolder(Pasta).Files
        If Fso.GetExtensionName(Arquivo.Path) = "rar" Then
            Call Descompactar(Fso, Arquivo.Path)
        End If
    Next Arquivo
    
    For Each SubDir In Fso.GetFolder(Pasta).SubFolders
        Call ListaDiretorios(Fso, SubDir)
    Next SubDir
End Sub

Sub Descompactar(Fso As Object, Arquivo As String)
    Dim Programa    As String
    Dim Pasta       As String
    Dim Comando     As String
    
    If Fso.FileExists(Arquivo) Then
        Programa = "C:\Program Files\7-Zip\7z.exe"
        Pasta = Fso.GetFile(Arquivo).ParentFolder
        Comando = """" & Programa & """" & " e " & """" & _
            Arquivo & """" & " -o" & """" & Pasta & """"
        Call Shell(Comando)
    End If
End Sub

 

  • 3 meses depois...
Postado

@Midori Muito obrigada! Gostaria apenas de entender como posso fazer com que os arquivos sejam descompactados dentro de uma única pasta criada, ou seja, todos os arquivos pdf (somete o arquivo, sem pasta e subpasta) que forem descompactados sejam copiados para uma pasta nova criada no mesmo diretório raiz que está a planilha (conforme imagem). Mas sem remover os duplicados, mantendo os arquivos mesmo que o nome seja duplicado.

image.png.68475185544be80bd99c5567c7547b18.png

Exemplo de teste.zip

Postado
Em 11/12/2022 às 19:51, Cfernandes disse:

como posso fazer com que os arquivos sejam descompactados dentro de uma única pasta criada

Atribua o caminho desse diretório a variável Pasta, p.ex,

 

Pasta = ThisWorkbook.Path & "\Arquivos descompactados"

 

  • 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...