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