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

VBA Integração com Internet Explorer

A Web está aí, não há como negar. Ela é onipresente em praticamente toda operação eletrônica realizada nos dias de hoje. Como não podia ser diferente, o Excel, ferramenta máxima para analistas e profissionais das mais diversas áreas do mercado precisa estar alinhado com esta necesssidade. E ele está! Neste forum, o debate é focado em expor dúvidas, sugestões, modelos de código e exemplos de uso do Excel na Integração com tecnologias Web.
Paulo Pavan
Colaborador
Colaborador
Mensagens: 12
Registrado em: Qui Set 06, 2018 7:40 pm

VBA Integração com Internet Explorer

Mensagem por Paulo Pavan »

Boa Noite Pessoal,

estou montando um programa para extrair dados da Web, e tudo está funcionando corretamente a extração, a questão é que eu gostaria de rodar consultas de vários dias sem ter que fechar e abrir novamente o IE. Eu consulto, extraio a informação para o Excel, depois volto a página anterior, pesquiso a próxima data e assim por diante.
Alguém sabe dizer se é possível "voltar a página anterior" pelo VBA? Se for possível já resolve meu problema.

Código: Selecionar todos

Public FimDaInstrucao As Boolean

Declare PtrSafe Function apShowIE Lib "user32" Alias "ShowWindow" _
            (ByVal hwnd As LongLong, ByVal nCmdShow As Long) As LongLong
 
Global Const SW_MAX = 3
Global Const SW_SHOWNORMAL = 1
Global Const SW_MINI = 2
Sub ExtrairPreviasPtax()

Dim Doc As HTMLDocument
Dim IE As New InternetExplorer
Dim sUrl As String
Dim Ele As Object
Dim PTax1, PTax2, PTax3, PTax4, PTaxFech, Check, Erro As Variant

 Dim i As Integer
 Dim dData As Date
 Dim QtdeCapturada As Long
 
i = 2
lLn = 1

Do While PtaxPrevia.Cells(i, 7).Value <> ""
    i = i + 1
Loop
    
    dData = PtaxPrevia.Cells(i, 1).Value

sUrl = "https://ptax.bcb.gov.br/ptax_internet/consultaBoletim.do?method=exibeFormularioConsultaBoletim"

With IE
   .Visible = True
   apShowIE IE.hwnd, SW_MAX
   .Navigate sUrl
   
End With

Do While IE.ReadyState <> READYSTATE_COMPLETE
    Do While Not WaitingLoad(5): VBA.DoEvents: Loop
        cCount = cCount + 1
            If cCount > 6 And cCount < 7 Then
                IE.Refresh
                ElseIf cCount > 10 Then
                
            MsgBox "O tempo limite de execução da função foi excedido! Favor tentar novamente mais tarde.", _
            vbOKOnly + vbCritical, "TEMPO LIMITE DE EXECUÇÃO EXCEDIDO"
               
                IE.Quit
                Exit Sub
            End If
Loop


Set Doc = IE.Document

Doc.getElementsByName("RadOpcao").Item(2).Checked = True
Doc.getElementsByName("RadOpcao").Item(2).Click
Doc.getElementById("DATAINI").Value = VBA.Format(dData, "dd/mm/yyyy")
IE.Document.forms(0).submit

PTax1 = Trim(IE.Document.getElementsByTagName("td")(3).innerText) * 1000
PTax2 = Trim(IE.Document.getElementsByTagName("td")(10).innerText) * 1000
PTax3 = Trim(IE.Document.getElementsByTagName("td")(16).innerText) * 1000
PTax4 = Trim(IE.Document.getElementsByTagName("td")(22).innerText) * 1000
PTaxFech = Trim(IE.Document.getElementsByTagName("td")(28).innerText) * 1000


PtaxPrevia.Cells(i, 2).Value = PTax1
PtaxPrevia.Cells(i, 3).Value = PTax2
PtaxPrevia.Cells(i, 4).Value = PTax3
PtaxPrevia.Cells(i, 5).Value = PTax4
PtaxPrevia.Cells(i, 6).Value = PTaxFech

PtaxPrevia.Cells(i, 7).Value = "Sim"

QtdeCaptura = QtdeCaptura + 1



End Sub


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.


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

Re: VBA Integração com Internet Explorer

Mensagem por webmaster »

Paulo,

Se clicar no botão "voltar" do navegador servir, acho que o SendKeys é uma opção:

https://www.youtube.com/watch?v=MkFVDW1F51M


Responder