Olá Amigos,
Hoje vou postar um artigo para quem já possui um pouco de conhecimento em programação em VBA, neste arquivo trabalharemos com a extração de um arquivo que esteja compactado no formato “zip” para uma pasta específica.
Para você que não possui conhecimentos em programação não se assuste, pois também recomendo a leitura, tentarei abordar o assunto da maneira mais simples o possível para que assim você que está dando os primeiros passos possa entender o que é passado e evoluir conforme o seu ciclo e curva de aprendizado.

Neste artigo trabalharemos com objetos para manipulação do arquivos, variáveis e a criação de uma pasta via VBA, abaixo você tem o código comentado e um exemplo para Download.
Decidi criar esta rotina quando passei a atuar com mais forte com a otimização de rotinas de extração de dados de arquivos compactados no formato “ZIP” onde atuo, na empresa onde trabalho temos uma rotina que roda sempre por volta das 03hs da manhã via Robot, gerando assim alguns arquivos compactados que geralmente eram descompactados manualmente, este artigo também me chamou a atenção pois existe muita coisa na WEB porém poucos artigos bons e destes nem todos com explicações que fizessem com que atingisse meu objetivo.
Com esta rotina este trabalho deixou de ser realizado manualmente e deixou de depender de uma pessoa, isso gerou ganho de tempo, performance diferenciada, redução para 0 do índice de erros por motivos humanos.
Como dica digo que a otimização de processos e investir na inteligência da operação seja qual for o seu segmento é o melhor negócio.
[ok]Assim como eu, você também deve achar desnecessário e muito cansativo ficar descompactando arquivos manualmente, a partir daí espero que você possa aprender algo com o código abaixo e assim acabar com o problema de descompactar aquivos no formato zip via vba.[/ok]
Abaixo temos o código que irá descompactar arquivos ZIP com VBA, abra o Microsoft Excel, aperte as teclas Alt + 11 (Aperte uma, solte e depois aperte a outra) você verá o Editor de códigos do VBA, insira um novo módulo e cole o código abaixo, não esqueça de alterar o caminho das variáveis do código:
[codigo]
Sub Unzip1()
Dim oApp As Object ‘Objeto application
Dim Arquivo As Variant
Dim NovaPasta As Variant
Dim Caminho As String
Dim strDate As String
Arquivo = “C:\Douglas_Godoy\VBA\erros_2012.zip”
Caminho = “C:\Douglas_Godoy\VBA\”
strDate = Format(Now, ” dd-mm-yy h-mm-ss”)
NovaPasta = Caminho & “Nome da Pasta” & strDate & “\”
‘Cria um nova pasta chamada Solicit dd-mm-yyyy
MkDir NovaPasta
‘Extrai os arquivos para a pasta criada
Set oApp = CreateObject(“Shell.Application”)
oApp.Namespace(NovaPasta).CopyHere oApp.Namespace(Arquivo).items
End Sub
[/codigo]
Pontos Importantes:
Temos as variáveis: Arquivo, Caminho, strDate e NovaPasta.
Arquivo: substitua com o caminho completo de onde está o arquivo “.zip” que você deseja descompactar conforme a linha 10.
Caminho: você deve colocar o caminho onde deseja que o arquivo seja descompactado, no exemplo colocamos a mesma pasta, porém você pode alterar o endereço para que assim ele descompacte o arquivo via vba na pasta que você desejar.
Atenção: Coloque sempre barra ao contrário (” \ “) no final do caminho, desta forma não haverá problemas para a criação de pastas e prosseguimento da rotina.
strDate: esta variável existe pois ao extrair o arquivo é criada uma pasta dentro do caminho, e esta pasta irá conter o nome que determinarmos na variável NovaPasta e a data de hora na qual a rotina foi executada.
Para encontrar a data atual com formatos personalizados você pode utilizar:
strDate = Format(Now, ” dd-mm-yy h-mm-ss”)
Para trazer Dia, Mês, Ano, Hora, Minuto e Segundo.
strDate = Format(Now, ” dd-mm-yy”)
Para trazer Dia, Mês, Ano.
NovaPasta: Esta variável é composta pelo caminho já declarado anteriormente na variável “caminho” e pela variável “strDate”, formando assim o caminho completo mais o nome da nova pasta a ser criada concatenando as duas variáveis.
[atencao]Para se criar uma pasta com VBA utilizamos o comando MkDir, semelhante a como fazemos no MSDOS. Após utilizarmos MkDir devemos inserir o caminho completo mais o nome da pasta a ser criada.
[/atencao]
Verifique como criar uma pasta via VBA conforme exemplo abaixo, em outro artigo abordarei este assunto de forma mais completa.
[codigo]
Sub Criar_Pasta()
Dim NovaPasta As String
NovaPasta = “C:\Teste”
MkDir NovaPasta
End Sub
[/codigo]
Com este arquivo espero que sua dúvidas sejam sanadas e que você tenha pelo menos um norte para iniciar seus trabalhos no que refere-se a descompactar arquivos zip com VBA.
Agradeço pela leitura e fico no aguardo de seus comentários e sugestões.
Um abraço. DG

Deixe um comentário