Notifications
Clear all

Descompactar arquivos zip de uma pasta

3 Posts
3 Usuários
0 Reactions
1,471 Visualizações
(@robo8268)
Posts: 0
New Member
Topic starter
 

Boa tarde pessoal, tudo bem?

Toda semana, eu baixo algumas bases de dados zipadas, ai eu tenho que descompactar cada uma delas (umas 20 mais ou menos...)

Eu busquei vários tópicos na internet, tanto ingles como em português, e não consegui encontrar nenhuma solução para o meu problema.

Eu preciso descompactar automaticamente todos os arquivos zip da pasta, só que quando eu rodo a macro, aparece o erro 91, na linha do namespace.

Alguém pode me ajudar?

(não tenho como upar o arquivo, pois aqui no meu trabalho é bloqueado)

Segue o código que estou usando:

Sub TestRun()
Dim strTargetPath As String
Dim Fname As String
Dim fso As Object
Dim folder As Object
Dim caminho As String
Dim arquivo As Object


Set fso = CreateObject("Scripting.FileSystemObject")

caminho = "C:UsersrodrwanDesktopTABELÕES2016Março"


Set folder = fso.GetFolder(caminho)
For Each arquivo In folder.Files
If Right(arquivo.Name, 3) = "zip" Then
Call UnZip(caminho, arquivo)
End If
Next
  '  Call UnZip("C:UsersNCDesktopVisheshTest", "C:UsersNCDesktopVisheshTestTestZipFile.Zip")
 
End Sub
 
 
 
Sub UnZip(caminho As String, arquivo As Variant)
 
    Dim oApp As Object
 
 
    Set oApp = CreateObject("Shell.Application")
 
    oApp.Namespace(caminho).CopyHere oApp.Namespace(arquivo).items
    
 
End Sub
 
Postado : 01/04/2016 11:32 am
(@trindade)
Posts: 0
New Member
 

Boa tarde, robo8268.

Testei seu código e também retorno o mesmo erro, procurei na internet e encontrei o seguinte exemplo que esta funcionado, da uma olhada nesse link aqui http://www.rondebruin.nl/win/s7/win002.htm, acho que já te da um norte, para adaptar a sua necessidade.

 
Postado : 01/04/2016 12:31 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Se não me engano utilizando essa estrutura, o segundo argumento na função unzip deveria ser o local onde será descompactado o arquivo.
Experimente a chamada assim
Call UnZip(caminho & arquivo, caminho)

Eu utilizo uma função assim:

Private Function DescompactarArquivo(strOrigemArquivoCompactado As String, strDestinoArquivoDescompactado As String)
    With CreateObject("Shell.Application")
        .Namespace(Error$ & strDestinoArquivoDescompactado).CopyHere .Namespace(Error$ & strOrigemArquivoCompactado).items
    End With
End Function

e a chamada assim:

Call DescompactarArquivo(sPath & sZip(x), sPath)
 
Postado : 01/04/2016 12:42 pm