Pessoal,
Sou novo aqui no fórum.
Tenho uma macro baixa arquivos de um local específico, porém, os arquivos vem zipados do site onde os baixo.
Preciso descompactá-los mas não quero um novo código "do zero", quero apenas implementar a linha de código que extraia esses arquivos.
Abaixo as Subs que utilizo:
'Variável que armazena o destino dos arquivos
Public Mylocal As String
Private Declare Function URLDownloadToFile _
Lib "urlmon" Alias "URLDownloadToFileA" _
(ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, _
ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
'Procedimento principal
Sub Download_CheckList_CVM()
'Variáveis para armazenar o nome da pasta e nome do arquivo, respectivamente
Dim pastaDadosCVM, arquivo As String
'Contador
Dim i As Integer
'Vetor de 4 posições que armazena os quatro arquivos que serão baixados
Dim arrArquivo(1 To 4) As String
'Contador inicia com 1 (primeira linha da planilha)
i = 1
'Repete instruções até que encontre uma célula vazia
Do While Cells(i, 1) <> ""
'Variável "pastaDadosCVM" recebe o nome que está na linha atual (1ª coluna)
pastaDadosCVM = Cells(i, 1)
'Variável "arquivo" recebe o nome que está na linha atual (2ª coluna)
arquivo = Cells(i, 2)
'Variável "Mylocal" recebe o diretório
Mylocal = "A:Adm Fiduciário20. Analise de Risco e Carteira - CRVDados ExternosDados CVM" & pastaDadosCVM & ""
'Chama a função "Download"
Call Download(Mylocal, arquivo)
arrArquivo(i) = arquivo
i = i + 1
Loop
Dim x As Integer
'Envia mensagem ao usuário informando que os arquivos foram baixados e, lista o nome dos mesmos
MsgBox "Download dos arquivos efetuado com sucesso! " & vbCrLf & vbCrLf & _
arrArquivo(1) & vbCrLf & arrArquivo(2) & vbCrLf & arrArquivo(3) & vbCrLf & arrArquivo(4)
End Sub
'Função que realiza o download dos arquivos
Sub Download(Mylocal, arquivo)
'Tratamento de erro
On Error GoTo Err
'Variável auxiliar
Dim Auxiliar As Long
'Recebe a URL origem e caminho, respectivamente
Dim URL As String, CaminhoLocal As String
'Endereço do website onde estão os arquivos + nome dos arquivos
URL = " http://sistemas.cvm.gov.br/cadastro/" & arquivo
'Chama função para criar pastas
Call CriarPasta(Mylocal)
'Variável "CaminhoLocal" recebe o diretório de destino e nomes dos arquivos
CaminhoLocal = Mylocal + arquivo
'
Auxiliar = URLDownloadToFile(0, URL, CaminhoLocal, 0, 0)
Exit Sub
Err: MsgBox "Erro no download do arquivo"
End Sub
'Função para criar pasta
Sub CriarPasta(Mylocal)
'Criação de objeto para criar pasta
Dim fso As Object, NomePasta
Set fso = CreateObject("Scripting.FileSystemObject")
'Variáveis para guardar a data, ano, mês e dia
Dim data, ano, mes, dia As String
'Variável "data" recece o valor da célula C2
data = Range("C2")
'Variável "ano" recece apenas o ano da data atual
ano = Year(data)
'Variável "mes" recece apenas o mês da data atual
mes = Month(data)
'Variável "dia" recece apenas o dia da data atual
dia = Day(data)
'Define o formato de ano e dia com 2 dígitos
mes = Format(mes, "00")
dia = Format(dia, "00")
'Nomenclatura da pasta. Ex: 2015_04_22
NomePasta = ano & "_" & mes & "_" & dia
'
Mylocal = Mylocal & NomePasta & ""
If Not fso.FolderExists(Mylocal) Then
fso.CreateFolder (Mylocal)
End If
End Sub
Postado : 20/05/2015 8:32 am