Ir para conteúdo
Fórum Script Brasil
  • 0

VBA Banco Central


hpedrollo

Pergunta

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 para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...