Jump to content
Fórum Script Brasil
  • 0

VBA Banco Central


hpedrollo
 Share

Question

Prezados, boa tarde;

Estou enfrentando problemas ao adaptar um código desta página para o que preciso; a idéia é um crawler que informe no site do Banco Central uma Data Incial (Coluna"A" da planilha), Data Final (Coluna"B" da planilha), submeta ao site, copie a resposte e cola na Coluna "C" da planilha; porém a macro parece não encontrar a referência "Data Inicial" na página do Banco Central; ela pára em "IE.Document.all("Data Inicial").innertext = lDataInicial"

Alguma consegue?

 


'Inclui referência ao Microsoft Internet Controls
Sub lReferenciaIE()
Dim ObRef
On Error Resume Next

ThisWorkbook.VBProject.References.AddFromGuid "{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}", 1, 1
End Sub

Sub lsPesquisarCEPFaixa()
'Inclui a referência se não houver
lReferenciaIE

Dim IE As InternetExplorer
Dim lDataInicial As String
Dim lDataFinal As String
Dim lUltimaLinhaAtiva As Long
Dim lContador As Long

'Identifica a última célula ativa da lista
lUltimaLinhaAtiva = Worksheets("Plan1").Cells(Worksheets("Plan1").Rows.Count, 1).End(xlUp).Row

'Cria um objeto Internet Explorer
Set IE = New InternetExplorer

'Torna o objeto visível
IE.Visible = True

'Faz um loop por todas as linhas da planilha
For lContador = 2 To lUltimaLinhaAtiva
'Navega ao site dos correios
IE.Navigate "https://www.bcb.gov.br/?SELICDIARIOS"

'Identifica se a página já foi totalmente carregada
While IE.ReadyState <> READYSTATE_COMPLETE
Wend

'Como a página possui JavaScript que cria os objetos que são preenchidos após a carga completa, é necessário
'aguardar um tempo, coloquei 3 segundos, alterar conforme a necessidade.
'Caso não tenha javascript na criação dos objetos da página comentar esta parte do código, pois será bem
'mais rápida a execução.
sng = Timer
Do While sng + 1 > Timer
Loop

'Carrega os dados de cidade e UF que serão preenchidos na página
lDataFinal = Range("B" & lContador).Value
lDataInicial = Range("A" & lContador).Value

'Carrega os dados de cidade e UF na página e submente os dados do formulário
IE.Document.all("Data Inicial").innertext = lDataInicial
IE.Document.all("Data Final").Value = lDataFinal
IE.Document.forms("Geral").submit

'Identifica se a página já foi totalmente carregada
While IE.ReadyState <> READYSTATE_COMPLETE
Wend

'Como a página possui JavaScript que cria os objetos que são preenchidos após a carga completa, é necessário
'aguardar um tempo, coloquei 3 segundos, alterar conforme a necessidade.
'Caso não tenha javascript na criação dos objetos da página comentar esta parte do código, pois será bem
'mais rápida a execução.
sng = Timer
Do While sng + 1 > Timer
Loop

'Faz um loop pelos objetos do tipo table na página e procura pelo campo Faixa(s) de CEP: preenchido.
'Em seguida busca pela segunda coluna da linha de faixa de CEP e armazena esta informação diretamente na coluna C da linha
'da planilha
For Each i In IE.Document.body.getElementsByTagName("table")
If InStr(i.innertext, "Taxa (%a.a.)") > 0 Then
For Each l In i.getElementsByTagName("tr")
If InStr(l.innertext, lDataInicial) Then
Range("C" & lContador).Value = l.getElementsByTagName("td")(1).innertext
End If
Next l
End If
Next i
Next lContador

MsgBox "Concluído!"
End Sub



 

 

 

Link to comment
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.6k
    • Total Posts
      646.2k
×
×
  • Create New...