Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Download via Macro [RESOLVIDO]

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
GugaMarques
Colaborador
Colaborador
Mensagens: 24
Registrado em: Qua Dez 07, 2011 4:59 pm

Download via Macro [RESOLVIDO]

Mensagem por GugaMarques »

Pessoal, dessa vez estou com um problema complicado (pelo menos para mim :P ),


Problema: Preciso fazer o download de duas planilhas as quais acesso a URL de download só com um nome informado pelo usuário,
e dessas duas planilhas preciso tirar alguns dados sem abri-las. :D

Complicação: Aqui na empresa toda vez que abrimos o IE, ou qualquer outro navegador, precisamos autenticar a entrada, com Usuário e Senha. :?
Vizualizem a imagem da tela de autenticação:
Tela de autenticação
Tela de autenticação
Atenticação1.JPG (79.2 KiB) Exibido 7253 vezes

Feito até então: as URL's de download estão OK! :)
Consegui abrir cada página através da macro, só que preciso clicar em download...
Tentei usar o URLdownloadtoFile mas não consegui. :oops:
Código já feito:
Aqui só está com uma página!

Código: Selecionar todos

Public Sub download()

 'Declaração de variáveis
    Dim sURL As String
    Dim municipio As Variant
    Dim munURL As String
    Dim munCOD As Long
    
    'Adéqua o nome entrado pelo usuário ao nome usado no site do IBGE
    municipio = InputBox("Informe o município")
    For i = 3 To 168
        If UCase(municipio) = UCase(Cells(i, 2)) Then
            munURL = Cells(i, 3)
            munCOD = Cells(i, 1)
            Exit For
        End If
    Next i
    
    sURL = "http://www.ibge.gov.br/cidadesat/xtras/csv.php?tabela=financas&codmun=" & munCOD & "&nomemun=" & munURL
    
  'Abre a página de download
    Dim ie As Object

    Set ie = CreateObject("InternetExplorer.Application")
    ie.Navigate (sURL)
    ie.Visible = True
     
End Sub

Como não consegui anexar a planilha aqui vou botar alguns dados para vocês testarem:
Coluna A | Coluna B | Coluna C
Código | Município | Munípio ajustado a URL do IBGE

240810 | Natal | Natal
240325 | Parnamirim | Parnamirim
240200 | Caicó | Caic%F3
240240 | Carnaúba dos Dantas | Carna%FAba%20dos%20Dantas
241240 | São José do Seridó | S%E3o%20Jos%E9%20do%20Serid%F3
240800 | Mossoró | Mossor%F3
241210 | São João do Sabugi | S%E3o%20Jo%E3o%20do%20Sabugi
240940 | Pau dos Ferros | Pau%20dos%20Ferros
240310 | Currais Novos | Currais%20Novos


Me ajudem, =D
Obrigado desde já.
Editado pela última vez por GugaMarques em Qui Fev 09, 2012 2:56 pm, em um total de 1 vez.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


chamojo
Colaborador
Colaborador
Mensagens: 20
Registrado em: Ter Jan 10, 2012 12:23 pm
Contato:

Re: Download via Macro

Mensagem por chamojo »

Olá
Por aqui também não consegui.
qual o caminho que vc faz no site do ibge.
abs
Edu
www.ensinandoexcel.com.br


GugaMarques
Colaborador
Colaborador
Mensagens: 24
Registrado em: Qua Dez 07, 2011 4:59 pm

Re: Download via Macro

Mensagem por GugaMarques »

http://www.ibge.gov.br/cidadesat/xtras/ ... as&codmun=CODIGOMUNICIPIOnomemun=NOMEMUNICIPIOADAPTADO

É essa URL que baixa a planilha o que eu quero. Depois de baixa-las, eu vou "Passar de Texto para Colunas" (Eles são separados por ,), depois vou pegar os dados que me interessam (eles sempre vem na mesma ordem) e passar para uma tabela de outro arquivo. Isso com os dois downloads.

Tenho uma planilha já feita com todos os municípios do RN, com seu código e respectivo nome adaptado. Não sei porque essa adpatação, mas vi que todos caracteres que tenham acento ou espaço, recebem a mesma formatação na URL. Ex.: Espaço recebe %20, e por aí vai. Já fiz uma macro para fazer essas alteraçãoes.

Meu problema é com o download, que eu não quero que o usuário faça manualmente.

Mas eu tava pensando em deixar assim, e colocar uma msgbox perguntando se o download foi concluído, se foi, pergunta o nome do arquivo e a pasta salva, e faz as alterações que preciso, mas isso é muito passível de erro pelo usuário. :?
Tem como fazer alteração e pegar valores sem abrir o arquivo?




Ah, o site que você passou, eu dei uma vista rápida mas não achei nada. :cry:


Avatar do usuário
webmaster
Administrador
Mensagens: 3114
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

Re: Download via Macro

Mensagem por webmaster »

Pessoal,

Isso ajuda?

http://www.tomasvasquez.com.br/blog/mic ... um-arquivo

Acabei de publicar. Estava empoeirando aqui nos meus arquivos. :oops:

Abraços


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


GugaMarques
Colaborador
Colaborador
Mensagens: 24
Registrado em: Qua Dez 07, 2011 4:59 pm

Re: Download via Macro

Mensagem por GugaMarques »

Tentei aqui mas não deu certo. Olha como ficou:

Código: Selecionar todos

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
 
Public Sub Download()
    On Error GoTo Err
    Dim Auxiliar As Long
    Dim URL As String, CaminhoLocal As String
    
    Dim municipio As Variant
    Dim munURL As String
    Dim munCOD As Long
    
    'Adéqua o nome entrado pelo usuário ao nome usado no site do IBGE
    municipio = InputBox("Informe o município")
    For i = 3 To 168
        If UCase(municipio) = UCase(Cells(i, 2)) Then
            munURL = Cells(i, 3)
            munCOD = Cells(i, 1)
            Exit For
        End If
    Next i
    
    URL = "http://www.ibge.gov.br/cidadesat/xtras/csv.php?tabela=financas&codmun=" & munCOD & "&nomemun=" & munURL
    CaminhoLocal = "C:\Documents and Settings\estgustavo\desktop\"
    Auxiliar = URLDownloadToFile(0, URL, CaminhoLocal, 0, 0)
    MsgBox "Download efetuado com sucesso!"
    Exit Sub
Err:
    MsgBox "Erro no download do arquivo"
End Sub
Aparece a msgbox do download efetuado com sucesso, mas não faz o download. Já tentei alterar o caminho... Já pesquisei para ver se tinha salvado em outro local... =/ Abri o IE, loguei e depois executei, mas não rolou. Acho que vou deixar manual mesmo...


Obrigado pela paciência. :D


Avatar do usuário
webmaster
Administrador
Mensagens: 3114
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

Re: Download via Macro

Mensagem por webmaster »

Guga,

Confira se o link produzido está correto (deve estar). Depois, a string "C:\Documents and Settings\estgustavo\desktop\" não é um nome de arquivo válido. Veja se colocando "C:\Documents and Settings\estgustavo\desktop\arquivo.xxx" funciona.

Abraços


GugaMarques
Colaborador
Colaborador
Mensagens: 24
Registrado em: Qua Dez 07, 2011 4:59 pm

Re: Download via Macro

Mensagem por GugaMarques »

webmaster escreveu:Guga,

Confira se o link produzido está correto (deve estar). Depois, a string "C:\Documents and Settings\estgustavo\desktop\" não é um nome de arquivo válido. Veja se colocando "C:\Documents and Settings\estgustavo\desktop\arquivo.xxx" funciona.

Abraços
Tentei sim, mas não deu certo. Não sei o que ocorre... Tomás, estou tentando de outro jeito, mas to encontrando um erro:

Código: Selecionar todos

Public Sub download()

'Declaração de variáveis
    Dim sURL As String
    Dim municipio As Variant
    Dim munURL As String
    Dim munCOD As Long


    Application.DisplayAlerts = False
    'Adéqua o nome entrado pelo usuário ao nome usado no site do IBGE
    municipio = InputBox("Informe o município")
    For i = 3 To 168
        If UCase(municipio) = UCase(Cells(i, 2)) Then
            munURL = Cells(i, 3)
            munCOD = Cells(i, 1)
            Exit For
        End If
    Next i
    
    sURL = "http://www.ibge.gov.br/cidadesat/xtras/csv.php?tabela=financas&codmun=" & munCOD & "&nomemun=" & munURL
    
  'Abre a página de download
    Dim ie As Object
    MsgBox "Faça LOGIN, e depois salve o arquivo, sem alterar o nome, na Área de Trabalho(desktop)", vbInformation
    
    Set ie = CreateObject("InternetExplorer.Application")
    ie.Navigate (sURL)
    MsgBox "O download já terminou? Se sim, clique em OK", vbInformation
    
    
    municipio = StrConv(municipio, vbProperCase)
    Call TxtCl(municipio)
    
    Application.DisplayAlerts = True

End Sub

Public Sub TxtCl(municipio)
Dim caminho As String
Application.DisplayAlerts = False


caminho = "C:\Documents and Settings\estgustavo\desktop\" & municipio & "_financas.csv"

Workbooks.Open (caminho)
Sheets(1).Activate

  Range("A4:A29").Select
  With Selection
    Selection.TextToColumns Destination:=Range("A4"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
        Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
        :=Array(1, 1), TrailingMinusNumbers:=True
End With

Application.DisplayAlerts = True
End Sub

Na função TxtCl, dá erro, mas faz o que eu quero, que é passar de texto para coluna. Já tentei o Application.DisplayAlerts = False, mas não deu certo. =/
Que que você me diz?
Testa o código com:
municipio= "Natal"
munURL="Natal"
munCOD = 240810


E vê o que dá para melhorar, se não for pedir muito.


chamojo
Colaborador
Colaborador
Mensagens: 20
Registrado em: Ter Jan 10, 2012 12:23 pm
Contato:

Re: Download via Macro

Mensagem por chamojo »

Olá

Qual o problema em vc baixar desta maneira

Workbooks.Open Filename:= _
"http://www.ibge.gov.br/cidadesat/xtras/ ... Natividade"

qquer coisa me ligue [REMOVIDO] que tento te ajudar.
abs
Eduardo


Avatar do usuário
webmaster
Administrador
Mensagens: 3114
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

Re: Download via Macro

Mensagem por webmaster »

Eduardo,

Por políticas do fórum e para preservar principalmente sua segurança, removi o número de telefone que havia colocado. Este é um fórum público e não podemos garantir de que pessoas de má fé não tenham acesso a seu contéudo. De posse dessa informação, qualquer tipo de fraude poderia ser aplicada.

Pode parecer exagero, mas todo cuidado é pouco e os telefones não contam com mecanismos de antispam. ;)

Abraços


GugaMarques
Colaborador
Colaborador
Mensagens: 24
Registrado em: Qua Dez 07, 2011 4:59 pm

Re: Download via Macro

Mensagem por GugaMarques »

chamojo escreveu:Olá

Qual o problema em vc baixar desta maneira

Workbooks.Open Filename:= _
"http://www.ibge.gov.br/cidadesat/xtras/ ... Natividade"

Eduardo
Assim deu certo, mas agora estou com dúvida de como copiar os valores das células: B27 e B28 e passo para o arquivo que está executando a macro.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder