Descompactar arquiv...
 
Notifications
Clear all

Descompactar arquivos .Zip automaticamente

2 Posts
1 Usuários
0 Likes
521 Visualizações
Bautto
(@bautto)
Posts: 70
Estimable Member
Topic starter
 

Colegas, boa tarde.

Mais uma vez recorro aos experts do forum para um impasse...

Tenho uma rotina para descompactar arquivos .Zip, mas ela simplesmente não executa a descompactação.

O estranho é que na compilação não aponta erros, e nem mesmo na execução, mas os arquivos permanecem sem liberar os outros (no caso .csv), que estão compactados.

Segue a rotina, solicitando que alguém possa me informar onde está a falha, pois já fiz várias tentativas de alteração e não encontrei a solução.

Agradeço qualquer ajuda possível.

Abraços a todos.

Sub UnzipArqs()
    Dim FSO, oApp                                           As Object
    Dim Dados()                                             As Byte
    Dim FileNameFolder, Fname, DefPath, Arquivo, arNames()  As Variant
    Dim iFileNumber                                         As Long
    Dim myCount, A                                          As Integer
    Dim AnoRef, MesRef                                      As String
    
If Month(Date) = 1 Then
   MesRef = CStr(Year(Date) - 1 & Format(Month(Date) - 1, "00"))
Else
   MesRef = CStr(Year(Date) & Format(Month(Date) - 1, "00"))
End If
    
    AnoRef = Left(MesRef, 4)
    
    DefPath = "C:\_Meus Documentos\Planilhas\Testes\Arq_CSV\" & AnoRef & "\" & MesRef
     
    Fname = Dir("C:\_Meus Documentos\Planilhas\Testes\Arq_CSV\" & AnoRef & "\" & MesRef & "\*.zip")
     
Do Until Fname = ""
    myCount = myCount + 1
    ReDim Preserve arNames(1 To myCount)
    arNames(myCount) = Fname
    Fname = Dir
Loop

If Not IsArray(arNames) Then
    MsgBox "Não existem arquivos a serem trataos"
    Exit Sub
End If

For A = LBound(arNames) To UBound(arNames)
    
    Arquivo = DefPath & arNames(A)
    
    iFileNumber = FreeFile
    Open Arquivo For Binary Access Write As #iFileNumber
    Put #iFileNumber, 1, Dados
    Close #iFileNumber

    If Right(DefPath, 1) <> "\" Then
        DefPath = DefPath & "\"
    End If
     
    FileNameFolder = DefPath
 
    Set oApp = CreateObject("Shell.Application")
        oApp.Namespace("C:\_Meus Documentos\Planilhas\Testes\Arq_CSV\" & AnoRef & "\" & MesRef & "\" & arNames(A)).Items
        
Next A
    
End Sub
 
Postado : 09/08/2022 5:07 pm
Bautto
(@bautto)
Posts: 70
Estimable Member
Topic starter
 

Prezados colegas,

Como não houve nenhum acesso a este post e como consegui resolver através do código abaixo, deixo aqui para se alguém precisar, adaptá-lo às necessidades.

Bom proveito.

Option Explicit
Sub Descompactar()

Dim oApp            As Object
Dim Arquivo         As Variant
Dim Caminho         As Variant
Dim arNames()       As Variant
Dim myCount, A      As Integer
Dim AnoRef, MesRef  As String

If Month(Date) = 1 Then
   MesRef = CStr(Year(Date) - 1 & Format(Month(Date) - 1, "00"))
Else
   MesRef = CStr(Year(Date) & Format(Month(Date) - 1, "00"))
End If
    
    AnoRef = Left(MesRef, 4)
    
    Arquivo = Dir("C:\_Meus Documentos\Planilhas\Testes\Arq_CSV\" & AnoRef & "\" & MesRef & "\" & "*.zip")

Do Until Arquivo = ""
    myCount = myCount + 1
    ReDim Preserve arNames(1 To myCount)
    arNames(myCount) = Arquivo
    Arquivo = Dir
Loop

If Not IsArray(arNames) Then
    MsgBox "Não existem arquivos a serem trataos"
    Exit Sub
End If

For A = LBound(arNames) To UBound(arNames)

Arquivo = "C:\_Meus Documentos\Planilhas\Testes\Arq_CSV\" & AnoRef & "\" & MesRef & "\" & arNames(A)
Caminho = "C:\_Meus Documentos\Planilhas\Testes\Arq_CSV\" & AnoRef & "\" & MesRef & "\"

Set oApp = CreateObject("Shell.Application")
oApp.Namespace(Caminho).CopyHere oApp.Namespace(Arquivo).Items

Next A

End Sub
 
Postado : 15/08/2022 10:25 am