Notifications
Clear all

Descompactar via VBA arquivo .ZIP

7 Posts
2 Usuários
0 Reactions
7,330 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa tarde pessoal!

Preciso mais uma vez da ajuda de vocês!

Tenho a seguinte necessidade: Quero baixar o Boletim Diário da Bovespa (BDI), descompactar o arquivo depois importá-lo para minha base de dados onde darei os devidos tratamentos.
A importação está resolvida, depois que baixo e descompacto na pasta que determinei manualmente. Porém, tenho que descompactar manualmente todos os dias. Quero automatizar isso.
Resumindo, preciso de um exemplo de código para descompactar arquivo .zip.
Endereço para baixar o BDI:
http://www.bmfbovespa.com.br/bdi/bdiMMDD.zip

Agradeço antecipadamente a ajuda de vocês!
Atenciosamente,
Adriano Prachthäuser.

 
Postado : 23/09/2011 1:51 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Prachthäuser

Com o WinRar (que é o que uso), veja abaixo;
para o winzip é bem similar, porem muda a letra comando (no exemplo o e logo apos o .exe)

Sub UnZipando()

ChDir ThisWorkbook.Path    'Altera o diretorio de "trabalho" para o o arquivo

'Sintaxe para winRar

arqcomp = ThisWorkbook.Path & "NomedoArquivo"	'Aqui nome do arquivo, deve ser sem espaços

Shell "C:Arquivos de programasWinRARWinRAR.exe e " & arqcomp, vbMinimizedFocus		
End Sub
 
Postado : 23/09/2011 3:58 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Bom dia Reinaldo!

Muito obrigado. Simples!

Atenciosamente,
Adriano Prachthäuser

 
Postado : 24/09/2011 7:04 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Desculpe por reabilitar esse tópico de novo, mas preciso de algo parecido com isso, preciso de uma macro para baixar o arquivo zip para uma pasta e descompactar, que faça os 2 processos o endereço do arquivo zip é esse http://www1.caixa.gov.br/loterias/_arqu ... lotfac.zip e a pasta para salvar pode ser ser a mesma pasta da planilha onde está a macro ou outra pasta temp, se alguem puder me ajudar, agradeço

 
Postado : 18/10/2011 6:19 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Resolvido, o código que usei para o procedimento acima foi esse

Sub DownloadEUnzip()
Dim FSO, oApp As Object
Dim objHttp, DefPath, Arquivo As String
Dim Dados() As Byte
Dim Fname As Variant
Dim FileNameFolder As Variant
Dim iFileNumber As Long
Set objHttp = CreateObject("MSXML2.ServerXMLHTTP")
objHttp.Open "GET", " http://www1.caixa.gov.br/loterias/_arquivos/loterias/D_lotfac.zip", False
objHttp.Send
DefPath = "C:LoteriaTemp" '<<< Altere aqui
Arquivo = DefPath & "D_lotfac.zip"
If objHttp.Status = "200" Then
Dados = objHttp.ResponseBody
iFileNumber = FreeFile
Open Arquivo For Binary Access Write As #iFileNumber
Put #iFileNumber, 1, Dados
Close #iFileNumber
End If
If Right(DefPath, 1) <> "" Then
DefPath = DefPath & ""
End If
FileNameFolder = DefPath

Set oApp = CreateObject("Shell.Application")
oApp.Namespace(FileNameFolder).CopyHere oApp.Namespace("C:LoteriaTempD_lotfac.zip").items
End Sub

 
Postado : 19/10/2011 4:04 pm
(@supreme)
Posts: 1
New Member
 

Amigo(s), testei a macro, era(quase) o que eu procurava, PORÉM, foi a que mais chegou perto até agora.
Se usar ela na íntegra, dá um erro de execução, mas baixa o arquivo zipado na pasta "temp".
Se excluir a última parte(abaixo/azul), não dá mensagem de erro, e baixa o arquivo zipado.
MInha pretensão ERA baixar os resultados das LOTERIAS em planilhas, já DESCOMPACTANDO o arquivo zipado, e a cada concurso, só ir atualizando os resultados, e se possível, em ordem numérica.
Seria Possível? Como? Poderia me Ajudar?
Utilizo Excell 2003 e 2007.
Jaime.
Set oApp = CreateObject("Shell.Application")
oApp.Namespace(FileNameFolder).CopyHere oApp.Namespace("C:LoteriaTempD_lotfac.zip").items
End Sub

Título: Descompactar via VBA arquivo .ZIP

Resolvido, o código que usei para o procedimento acima foi esse

Sub DownloadEUnzip()
Dim FSO, oApp As Object
Dim objHttp, DefPath, Arquivo As String
Dim Dados() As Byte
Dim Fname As Variant
Dim FileNameFolder As Variant
Dim iFileNumber As Long
Set objHttp = CreateObject("MSXML2.ServerXMLHTTP")
objHttp.Open "GET", " http://www1.caixa.gov.br/loterias/_arquivos/loterias/D_lotfac.zip", False
objHttp.Send
DefPath = "C:LoteriaTemp" '<<< Altere aqui
Arquivo = DefPath & "D_lotfac.zip"
If objHttp.Status = "200" Then
Dados = objHttp.ResponseBody
iFileNumber = FreeFile
Open Arquivo For Binary Access Write As #iFileNumber
Put #iFileNumber, 1, Dados
Close #iFileNumber
End If
If Right(DefPath, 1) <> "" Then
DefPath = DefPath & ""
End If
FileNameFolder = DefPath

Set oApp = CreateObject("Shell.Application")
oApp.Namespace(FileNameFolder).CopyHere oApp.Namespace("C:LoteriaTempD_lotfac.zip").items
End Sub

 
Postado : 05/11/2011 7:58 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Amigo respondi sua MP

 
Postado : 07/11/2011 8:38 am